[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