Add PTRACE_SECCOMP_GET_METADATA from Linux 4.16 to sys/ptrace.h
Commit Message
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
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.
@@ -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
};
@@ -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
};
@@ -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
@@ -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
};
@@ -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
};
@@ -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
@@ -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
};
@@ -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
};
@@ -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
};
@@ -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
};