|
@@ -0,0 +1,108 @@
|
|
|
+From 0498fc0a812e53040a9527f7343089b8b1aa70a7 Mon Sep 17 00:00:00 2001
|
|
|
+From: Petr Vorel <petr.vorel@gmail.com>
|
|
|
+Date: Wed, 13 Nov 2019 01:26:06 +0100
|
|
|
+Subject: [PATCH 3/3] fanotify: Detect val vs. __val
|
|
|
+ fanotify_event_info_fid.fsid member
|
|
|
+MIME-Version: 1.0
|
|
|
+Content-Type: text/plain; charset=UTF-8
|
|
|
+Content-Transfer-Encoding: 8bit
|
|
|
+
|
|
|
+via FSID_VAL_MEMBER() macro and autotools detection.
|
|
|
+
|
|
|
+This fixes build on musl, which also defines fanotify_event_info_fid,
|
|
|
+but uses fsid_t type for fsid instead of __kernel_fsid_t.
|
|
|
+fsid_t type has __val[2] member (unlike val[2] in __kernel_fsid_t).
|
|
|
+
|
|
|
+Fixed error:
|
|
|
+
|
|
|
+fanotify13.c: In function ‘do_test’:
|
|
|
+fanotify13.c:278:20: error: ‘fsid_t’ {aka ‘struct __fsid_t’} has no member named ‘val’; did you mean ‘__val’?
|
|
|
+ event_fid->fsid.val[0],
|
|
|
+ ^~~
|
|
|
+../../../../include/tst_test.h:49:53: note: in definition of macro ‘tst_res’
|
|
|
+ tst_res_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__)
|
|
|
+ ^~~~~~~~~~~
|
|
|
+fanotify13.c:279:20: error: ‘fsid_t’ {aka ‘struct __fsid_t’} has no member named ‘val’; did you mean ‘__val’?
|
|
|
+ event_fid->fsid.val[1],
|
|
|
+
|
|
|
+Acked-by: Cyril Hrubis <chrubis@suse.cz>
|
|
|
+Acked-by: Jan Stancek <jstancek@redhat.com>
|
|
|
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
|
|
|
+[Upstream status: 0498fc0a812e53040a9527f7343089b8b1aa70a7]
|
|
|
+---
|
|
|
+ m4/ltp-fanotify.m4 | 1 +
|
|
|
+ testcases/kernel/syscalls/fanotify/fanotify.h | 6 ++++++
|
|
|
+ testcases/kernel/syscalls/fanotify/fanotify13.c | 8 ++++----
|
|
|
+ testcases/kernel/syscalls/fanotify/fanotify15.c | 4 ++--
|
|
|
+ 4 files changed, 13 insertions(+), 6 deletions(-)
|
|
|
+
|
|
|
+diff --git a/m4/ltp-fanotify.m4 b/m4/ltp-fanotify.m4
|
|
|
+index e7b77d8a4..f2e31eb68 100644
|
|
|
+--- a/m4/ltp-fanotify.m4
|
|
|
++++ b/m4/ltp-fanotify.m4
|
|
|
+@@ -4,4 +4,5 @@ dnl Copyright (c) 2019 Petr Vorel <petr.vorel@gmail.com>
|
|
|
+ AC_DEFUN([LTP_CHECK_FANOTIFY],[
|
|
|
+ AC_CHECK_TYPES([struct fanotify_event_info_header],,,[#include <sys/fanotify.h>])
|
|
|
+ AC_CHECK_TYPES([struct fanotify_event_info_fid],,,[#include <sys/fanotify.h>])
|
|
|
++AC_CHECK_MEMBERS([struct fanotify_event_info_fid.fsid.__val],,,[#include <sys/fanotify.h>])
|
|
|
+ ])
|
|
|
+diff --git a/testcases/kernel/syscalls/fanotify/fanotify.h b/testcases/kernel/syscalls/fanotify/fanotify.h
|
|
|
+index 9d2fded13..5370e30bb 100644
|
|
|
+--- a/testcases/kernel/syscalls/fanotify/fanotify.h
|
|
|
++++ b/testcases/kernel/syscalls/fanotify/fanotify.h
|
|
|
+@@ -143,6 +143,12 @@ struct fanotify_event_info_fid {
|
|
|
+ };
|
|
|
+ #endif /* HAVE_STRUCT_FANOTIFY_EVENT_INFO_FID */
|
|
|
+
|
|
|
++#ifdef HAVE_STRUCT_FANOTIFY_EVENT_INFO_FID_FSID___VAL
|
|
|
++# define FSID_VAL_MEMBER(fsid, i) (fsid.__val[i])
|
|
|
++#else
|
|
|
++# define FSID_VAL_MEMBER(fsid, i) (fsid.val[i])
|
|
|
++#endif /* HAVE_STRUCT_FANOTIFY_EVENT_INFO_FID_FSID___VAL */
|
|
|
++
|
|
|
+ #ifdef HAVE_NAME_TO_HANDLE_AT
|
|
|
+ /*
|
|
|
+ * Helper function used to obtain fsid and file_handle for a given path.
|
|
|
+diff --git a/testcases/kernel/syscalls/fanotify/fanotify13.c b/testcases/kernel/syscalls/fanotify/fanotify13.c
|
|
|
+index 030734285..b0d9fb5b6 100644
|
|
|
+--- a/testcases/kernel/syscalls/fanotify/fanotify13.c
|
|
|
++++ b/testcases/kernel/syscalls/fanotify/fanotify13.c
|
|
|
+@@ -130,8 +130,8 @@ static int setup_marks(unsigned int fd, struct test_case_t *tc)
|
|
|
+ "kernel");
|
|
|
+ return 1;
|
|
|
+ } else if (errno == ENODEV &&
|
|
|
+- !event_set[i].fsid.val[0] &&
|
|
|
+- !event_set[i].fsid.val[1]) {
|
|
|
++ !FSID_VAL_MEMBER(event_set[i].fsid, 0) &&
|
|
|
++ !FSID_VAL_MEMBER(event_set[i].fsid, 1)) {
|
|
|
+ tst_res(TCONF,
|
|
|
+ "FAN_REPORT_FID not supported on "
|
|
|
+ "filesystem type %s",
|
|
|
+@@ -275,8 +275,8 @@ static void do_test(unsigned int number)
|
|
|
+ "and name_to_handle_at(2)",
|
|
|
+ metadata->mask,
|
|
|
+ getpid(),
|
|
|
+- event_fid->fsid.val[0],
|
|
|
+- event_fid->fsid.val[1],
|
|
|
++ FSID_VAL_MEMBER(event_fid->fsid, 0),
|
|
|
++ FSID_VAL_MEMBER(event_fid->fsid, 1),
|
|
|
+ *(unsigned long *) event_file_handle->f_handle);
|
|
|
+ }
|
|
|
+ out:
|
|
|
+diff --git a/testcases/kernel/syscalls/fanotify/fanotify15.c b/testcases/kernel/syscalls/fanotify/fanotify15.c
|
|
|
+index e9e926078..48ed368ae 100644
|
|
|
+--- a/testcases/kernel/syscalls/fanotify/fanotify15.c
|
|
|
++++ b/testcases/kernel/syscalls/fanotify/fanotify15.c
|
|
|
+@@ -192,8 +192,8 @@ static void do_test(void)
|
|
|
+ "fid=%x.%x.%lx values",
|
|
|
+ metadata->mask,
|
|
|
+ getpid(),
|
|
|
+- event_fid->fsid.val[0],
|
|
|
+- event_fid->fsid.val[1],
|
|
|
++ FSID_VAL_MEMBER(event_fid->fsid, 0),
|
|
|
++ FSID_VAL_MEMBER(event_fid->fsid, 1),
|
|
|
+ *(unsigned long *)
|
|
|
+ event_file_handle->f_handle);
|
|
|
+ }
|
|
|
+--
|
|
|
+2.24.0
|