[LTP] [PATCH v3 1/3] syscalls/fanotify: Add a helper macro which checks for the presence of specific fanotify initialization flag(s)

Petr Vorel pvorel@suse.cz
Mon Nov 15 22:20:18 CET 2021


Hi Matthew, Amir,

Tested on two distro kernels with support (Tumbleweed and Debian unstable)
+ on various old kernels without support.

Merged with very minor fixes, see diff below.

NOTE: we now support basic static analysis + checkpatch formatting check - run
make check in fanotify directory or make check-fanotify20.

Thanks a lot!

Kind regards,
Petr

diff --git runtest/syscalls runtest/syscalls
index 1e6d46744..d57c73e39 100644
--- runtest/syscalls
+++ runtest/syscalls
@@ -605,6 +605,8 @@ fanotify16 fanotify16
 fanotify17 fanotify17
 fanotify18 fanotify18
 fanotify19 fanotify19
+fanotify20 fanotify20
+fanotify21 fanotify21
 
 ioperm01 ioperm01
 ioperm02 ioperm02
diff --git testcases/kernel/syscalls/fanotify/fanotify20.c testcases/kernel/syscalls/fanotify/fanotify20.c
index 9960d85eb..de0fdb782 100644
--- testcases/kernel/syscalls/fanotify/fanotify20.c
+++ testcases/kernel/syscalls/fanotify/fanotify20.c
@@ -12,6 +12,9 @@
  * returns an expected error code when provided an invalid initialization flag
  * alongside FAN_REPORT_PIDFD. Additionally, it checks that the operability with
  * existing FAN_REPORT_* flags is maintained and functioning as intended.
+ *
+ * NOTE: FAN_REPORT_PIDFD support was added in v5.15-rc1 in af579beb666a
+ * ("fanotify: add pidfd support to the fanotify API").
  */
 
 #define _GNU_SOURCE
@@ -39,7 +42,7 @@ static struct test_case_t {
 	},
 	{
 		"pass on FAN_REPORT_PIDFD | FAN_REPORT_FID | FAN_REPORT_DFID_NAME",
-		FAN_REPORT_PIDFD | FAN_REPORT_FID | FAN_REPORT_DFID_NAME ,
+		FAN_REPORT_PIDFD | FAN_REPORT_FID | FAN_REPORT_DFID_NAME,
 		0,
 		0,
 	},
diff --git testcases/kernel/syscalls/fanotify/fanotify21.c testcases/kernel/syscalls/fanotify/fanotify21.c
index e842dad17..6ae70c57e 100644
--- testcases/kernel/syscalls/fanotify/fanotify21.c
+++ testcases/kernel/syscalls/fanotify/fanotify21.c
@@ -11,6 +11,9 @@
  * A test which verifies whether the returned struct
  * fanotify_event_info_pidfd in FAN_REPORT_PIDFD mode contains the
  * expected set of information.
+ *
+ * NOTE: FAN_REPORT_PIDFD support was added in v5.15-rc1 in af579beb666a
+ * ("fanotify: add pidfd support to the fanotify API").
  */
 
 #define _GNU_SOURCE
@@ -56,7 +59,7 @@ struct test_case_t {
 
 static int fanotify_fd;
 static char event_buf[BUF_SZ];
-static struct pidfd_fdinfo_t *self_pidfd_fdinfo = NULL;
+static struct pidfd_fdinfo_t *self_pidfd_fdinfo;
 
 static struct pidfd_fdinfo_t *read_pidfd_fdinfo(int pidfd)
 {
@@ -158,7 +161,7 @@ static void do_test(unsigned int num)
 	 * buffer.
 	 */
 	len = SAFE_READ(0, fanotify_fd, event_buf, sizeof(event_buf));
-	while(i < len) {
+	while (i < len) {
 		struct fanotify_event_metadata *event;
 		struct fanotify_event_info_pidfd *info;
 		struct pidfd_fdinfo_t *event_pidfd_fdinfo = NULL;
@@ -197,7 +200,7 @@ static void do_test(unsigned int num)
 			tst_res(TFAIL,
 				"pidfd creation failed for pid: %u with pidfd error value "
 				"set to: %d",
-				(unsigned)event->pid,
+				(unsigned int)event->pid,
 				info->pidfd);
 			goto next_event;
 		} else if (tc->want_pidfd_err &&
@@ -205,14 +208,14 @@ static void do_test(unsigned int num)
 			tst_res(TFAIL,
 				"pidfd set to an unexpected error: %d for pid: %u",
 				info->pidfd,
-				(unsigned)event->pid);
+				(unsigned int)event->pid);
 			goto next_event;
 		} else if (tc->want_pidfd_err &&
 			   info->pidfd == tc->want_pidfd_err) {
 			tst_res(TPASS,
 				"pid: %u terminated before pidfd was created, "
 				"pidfd set to the value of: %d, as expected",
-				(unsigned)event->pid,
+				(unsigned int)event->pid,
 				FAN_NOPIDFD);
 			goto next_event;
 		}
@@ -227,15 +230,15 @@ static void do_test(unsigned int num)
 				"reading fdinfo for pidfd: %d "
 				"describing pid: %u failed",
 				info->pidfd,
-				(unsigned)event->pid);
+				(unsigned int)event->pid);
 			goto next_event;
 		} else if (event_pidfd_fdinfo->pid != event->pid) {
 			tst_res(TFAIL,
 				"pidfd provided for incorrect pid "
 				"(expected pidfd for pid: %u, got pidfd for "
 				"pid: %u)",
-				(unsigned)event->pid,
-				(unsigned)event_pidfd_fdinfo->pid);
+				(unsigned int)event->pid,
+				(unsigned int)event_pidfd_fdinfo->pid);
 			goto next_event;
 		} else if (memcmp(event_pidfd_fdinfo, self_pidfd_fdinfo,
 				  sizeof(struct pidfd_fdinfo_t))) {
@@ -261,7 +264,7 @@ static void do_test(unsigned int num)
 				"mask: %lld, pid: %u, fd: %d, "
 				"pidfd: %d, info_type: %d, info_len: %d",
 				(unsigned long long)event->mask,
-				(unsigned)event->pid,
+				(unsigned int)event->pid,
 				event->fd,
 				info->pidfd,
 				info->hdr.info_type,


More information about the ltp mailing list