Unconditonally define seccomp_metadata and remove the linux/ptrace.h include.
There are conflicts between glibc system headers sys/ptrace.h and linux/ptrace.h that can likely cause seccomp_metadata to not be defined depending on what system header versions are installed, leading to compile errors. This fix makes this test more likely to compile on a wider variety of systems.
Signed-off-by: Luke Nowakowski-Krijger luke.nowakowskikrijger@canonical.com --- v2 + resend: Added comment to explain why there is a header definiton being defined in the file and to suggest to future developers that they might have to do the same for future fixes for definition issues like this.
tools/testing/selftests/seccomp/seccomp_bpf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index d425688cf59c..19d0b448511c 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -26,7 +26,6 @@ #include <sys/ptrace.h> #include <sys/user.h> #include <linux/prctl.h> -#include <linux/ptrace.h> #include <linux/seccomp.h> #include <pthread.h> #include <semaphore.h> @@ -171,12 +170,17 @@ struct seccomp_data {
#ifndef PTRACE_SECCOMP_GET_METADATA #define PTRACE_SECCOMP_GET_METADATA 0x420d +#endif
+/* + * There are conflicting definitions in ptrace system headers that lead to + * struct seccomp_metadata to not be defined. So until those conflicts get + * sorted out, we should rely on some of our own in-tree ptrace definitions. + */ struct seccomp_metadata { __u64 filter_off; /* Input: which filter */ __u64 flags; /* Output: filter's flags */ }; -#endif
#ifndef SECCOMP_FILTER_FLAG_NEW_LISTENER #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)