diff mbox

Add PTRACE_SECCOMP_GET_METADATA from Linux 4.16 to sys/ptrace.h

Message ID alpine.DEB.2.20.1804232320080.22416@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers April 23, 2018, 11:23 p.m. UTC
On Mon, 23 Apr 2018, Dmitry V. Levin wrote:

> On Mon, Apr 23, 2018 at 05:07:25PM +0000, Joseph Myers wrote:
> > On Mon, 23 Apr 2018, Dmitry V. Levin wrote:
> > 
> > > On Mon, Apr 23, 2018 at 03:56:48PM +0000, Joseph Myers wrote:
> > > > This patch adds the PTRACE_SECCOMP_GET_METADATA constant from Linux
> > > > 4.16 to all relevant sys/ptrace.h files.
> > > 
> > > Thanks, I haven't managed to submit this update myself.
> > > 
> > > This has to be committed along with the following two changes:
> > > - adding #undef PTRACE_SECCOMP_GET_METADATA to all files that already
> > >   undefine PTRACE_SECCOMP_GET_FILTER, for exactly the same reason;
> > 
> > I believe this patch does that.
> 
> It is not mentioned in the ChangeLog entry, so I must have missed it
> in the patch itself.

I think mentioning the name as a new macro and enum value is sufficient 
without going into the details of how in certain headers a new macro also 
involves a #undef.

> > > - adding to bits/ptrace-shared.h a definition equivalent
> > >   to struct seccomp_metadata.
> > 
> > This may be useful, but I don't see it as necessary to add the constant.
> 
> The constant is useless without the corresponding structure.

Which a user could provide themselves if they wish.  Anyway, this patch 
version adds such a structure, named struct __ptrace_seccomp_metadata by 
analogy to other such structures there.


Add PTRACE_SECCOMP_GET_METADATA from Linux 4.16 to sys/ptrace.h.

This patch adds the PTRACE_SECCOMP_GET_METADATA constant from Linux
4.16 to all relevant sys/ptrace.h files.  A type struct
__ptrace_seccomp_metadata, analogous to other such types, is also
added.

Tested for x86_64, and with build-many-glibcs.py.

2018-04-23  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): New enum value and macro.
	* sysdeps/unix/sysv/linux/bits/ptrace-shared.h
	(struct __ptrace_seccomp_metadata): New type.
	* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/arm/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/s390/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/tile/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.
	* sysdeps/unix/sysv/linux/x86/sys/ptrace.h
	(PTRACE_SECCOMP_GET_METADATA): Likewise.

Comments

Dmitry V. Levin April 23, 2018, 11:55 p.m. UTC | #1
On Mon, Apr 23, 2018 at 11:23:05PM +0000, Joseph Myers wrote:
> On Mon, 23 Apr 2018, Dmitry V. Levin wrote:
> > On Mon, Apr 23, 2018 at 05:07:25PM +0000, Joseph Myers wrote:
> > > On Mon, 23 Apr 2018, Dmitry V. Levin wrote:
> > > > On Mon, Apr 23, 2018 at 03:56:48PM +0000, Joseph Myers wrote:
> > > > > This patch adds the PTRACE_SECCOMP_GET_METADATA constant from Linux
> > > > > 4.16 to all relevant sys/ptrace.h files.
> > > > 
> > > > Thanks, I haven't managed to submit this update myself.
> > > > 
> > > > This has to be committed along with the following two changes:
> > > > - adding #undef PTRACE_SECCOMP_GET_METADATA to all files that already
> > > >   undefine PTRACE_SECCOMP_GET_FILTER, for exactly the same reason;
> > > 
> > > I believe this patch does that.
> > 
> > It is not mentioned in the ChangeLog entry, so I must have missed it
> > in the patch itself.
> 
> I think mentioning the name as a new macro and enum value is sufficient 
> without going into the details of how in certain headers a new macro also 
> involves a #undef.
> 
> > > > - adding to bits/ptrace-shared.h a definition equivalent
> > > >   to struct seccomp_metadata.
> > > 
> > > This may be useful, but I don't see it as necessary to add the constant.
> > 
> > The constant is useless without the corresponding structure.
> 
> Which a user could provide themselves if they wish.

Given the problematic definition of the structure before the linux commit
v4.16-rc3~9^2~2^2~2, it's better to provide a proper definition.

> Anyway, this patch 
> version adds such a structure, named struct __ptrace_seccomp_metadata by 
> analogy to other such structures there.
> 
> 
> Add PTRACE_SECCOMP_GET_METADATA from Linux 4.16 to sys/ptrace.h.
> 
> This patch adds the PTRACE_SECCOMP_GET_METADATA constant from Linux
> 4.16 to all relevant sys/ptrace.h files.  A type struct
> __ptrace_seccomp_metadata, analogous to other such types, is also
> added.

Looks good, thanks.
diff mbox

Patch

diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
index 444edbb..93e373c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
@@ -132,8 +132,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/arm/sys/ptrace.h b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
index fbcb938..bc54a1e 100644
--- a/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h
@@ -192,8 +192,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/bits/ptrace-shared.h b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
index 960b101..03a7791 100644
--- a/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
+++ b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h
@@ -66,6 +66,13 @@  enum __ptrace_peeksiginfo_flags
   PTRACE_PEEKSIGINFO_SHARED = (1 << 0)
 };
 
+/* Argument and results of PTRACE_SECCOMP_GET_METADATA.  */
+struct __ptrace_seccomp_metadata
+{
+  __uint64_t filter_off;	/* Input: which filter.  */
+  __uint64_t flags;		/* Output: filter's flags.  */
+};
+
 /* Perform process tracing functions.  REQUEST is one of the values
    above, and determines the action to be taken.
    For all requests except PTRACE_TRACEME, PID specifies the process to be
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
index 1c73b9d..e00b121 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
@@ -145,8 +145,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
index 8317821..9fde99c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
@@ -49,6 +49,7 @@  __BEGIN_DECLS
 # undef PTRACE_POKEDATA
 # undef PTRACE_POKETEXT
 # undef PTRACE_SECCOMP_GET_FILTER
+# undef PTRACE_SECCOMP_GET_METADATA
 # undef PTRACE_SEIZE
 # undef PTRACE_SET_DEBUGREG
 # undef PTRACE_SETEVRREGS
@@ -236,8 +237,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
index cca0248..d60a034 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h
@@ -52,6 +52,7 @@  __BEGIN_DECLS
 # undef PTRACE_GETSIGMASK
 # undef PTRACE_SETSIGMASK
 # undef PTRACE_SECCOMP_GET_FILTER
+# undef PTRACE_SECCOMP_GET_METADATA
 # undef PTRACE_PEEKUSR_AREA
 # undef PTRACE_POKEUSR_AREA
 # undef PTRACE_GET_LAST_BREAK
@@ -193,6 +194,10 @@  enum __ptrace_request
   PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
 
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d,
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+
   PTRACE_PEEKUSR_AREA = 0x5000,
 #define PTRACE_PEEKUSR_AREA PTRACE_PEEKUSR_AREA
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
index 9193275..c037734 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
@@ -213,8 +213,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h b/sysdeps/unix/sysv/linux/sys/ptrace.h
index 85772f3..3c71a0e 100644
--- a/sysdeps/unix/sysv/linux/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/sys/ptrace.h
@@ -162,8 +162,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/tile/sys/ptrace.h b/sysdeps/unix/sysv/linux/tile/sys/ptrace.h
index a1db185..d391037 100644
--- a/sysdeps/unix/sysv/linux/tile/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/tile/sys/ptrace.h
@@ -136,8 +136,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };
 
 
diff --git a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
index 6000342..6d4605b 100644
--- a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h
@@ -182,8 +182,12 @@  enum __ptrace_request
 #define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
 
   /* Get seccomp BPF filters.  */
-  PTRACE_SECCOMP_GET_FILTER = 0x420c
+  PTRACE_SECCOMP_GET_FILTER = 0x420c,
 #define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+  /* Get seccomp BPF filter metadata.  */
+  PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
 };