From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v3 3/5] fanotify: Introduce SAFE_FANOTIFY_MARK() macro
Date: Thu, 19 Nov 2020 11:27:40 +0100 [thread overview]
Message-ID: <20201119102740.GD2785@yuki.lan> (raw)
In-Reply-To: <20201113164944.26101-4-pvorel@suse.cz>
Hi!
> return rval;
> }
> +
> #define SAFE_FANOTIFY_INIT(fan, mode) \
> safe_fanotify_init(__FILE__, __LINE__, (fan), (mode))
>
> @@ -189,6 +190,41 @@ struct fanotify_event_info_fid {
> #define MAX_HANDLE_SZ 128
> #endif
>
> +static inline int safe_fanotify_mark(const char *file, const int lineno,
> + int fd, unsigned int flags, uint64_t mask,
> + int dfd, const char *pathname)
> +{
> + int rval;
> +
> + rval = fanotify_mark(fd, flags, mask, dfd, pathname);
> +
> + if (rval == -1) {
> + if (errno == ENODEV || errno == EOPNOTSUPP || errno == EXDEV)
> + tst_brk(TCONF,
> + "%s:%d: FAN_REPORT_FID not supported on %s filesystem",
> + file, lineno, tst_device->fs_type);
I guess that we should use tst_brk_() and pass the file and lineno here
and in the rest of the tst_ calls in this function.
> + if (errno == EINVAL && (flags & FAN_MARK_FILESYSTEM) == FAN_MARK_FILESYSTEM) {
The comparsion in (flags & FAN_MARK_FILESYSTEM) == FAN_MARK_FILESYSTEM
seems to be useless. How is this different from a simple
(flags & MARK_FILESYSTEM) when converted into a boolean value?
> + tst_brk(TCONF,
> + "%s:%d: FAN_MARK_FILESYSTEM not supported by kernel?",
> + file, lineno);
> + }
> +
> + tst_brk(TBROK | TERRNO, "%s:%d: fanotify_mark() failed",
> + file, lineno);
> + }
> +
> + if (rval < -1) {
> + tst_brk(TBROK | TERRNO, "%s:%d: invalid fanotify_mark() return %d",
> + file, lineno, rval);
> + }
> +
> + return rval;
> +}
> +
> +#define SAFE_FANOTIFY_MARK(fd, flags, mask, dfd, pathname) \
> + safe_fanotify_mark(__FILE__, __LINE__, (fd), (flags), (mask), (dfd), (pathname))
> +
> /*
> * Helper function used to obtain fsid and file_handle for a given path.
> * Used by test files correlated to FAN_REPORT_FID functionality.
> @@ -242,7 +278,6 @@ static inline void fanotify_save_fid(const char *path,
> #define INIT_FANOTIFY_MARK_TYPE(t) \
> { FAN_MARK_ ## t, "FAN_MARK_" #t }
>
> -
> static inline void fanotify_access_permissions_supported_by_kernel(void)
> {
> int fd;
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify01.c b/testcases/kernel/syscalls/fanotify/fanotify01.c
> index 03e453f41..7690f6b88 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify01.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify01.c
> @@ -101,19 +101,8 @@ static void test_fanotify(unsigned int n)
> "failed", tc->init_flags);
> }
>
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD | mark->flag,
> - FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN,
> - AT_FDCWD, fname) < 0) {
> - if (errno == EINVAL && mark->flag == FAN_MARK_FILESYSTEM) {
> - tst_res(TCONF,
> - "FAN_MARK_FILESYSTEM not supported in kernel?");
> - return;
> - }
Here we had tst_res(TCONF, ...) followed by a return but we will can
tst_brk() after the change. I guess that we may skip part of the test on
older kernels with that change.
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD, FAN_ACCESS | %s | "
> - "FAN_MODIFY | FAN_CLOSE | FAN_OPEN, AT_FDCWD, %s) "
> - "failed", fd_notify, mark->name, fname);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD | mark->flag,
> + FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN, AT_FDCWD, fname);
>
> /*
> * generate sequence of events
> @@ -161,14 +150,9 @@ static void test_fanotify(unsigned int n)
> */
>
> /* Ignore access events */
> - if (fanotify_mark(fd_notify,
> + SAFE_FANOTIFY_MARK(fd_notify,
> FAN_MARK_ADD | mark->flag | FAN_MARK_IGNORED_MASK,
> - FAN_ACCESS, AT_FDCWD, fname) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD | %s | "
> - "FAN_MARK_IGNORED_MASK, FAN_ACCESS, AT_FDCWD, %s) "
> - "failed", fd_notify, mark->name, fname);
> - }
> + FAN_ACCESS, AT_FDCWD, fname);
>
> fd = SAFE_OPEN(fname, O_RDWR);
> event_set[tst_count] = FAN_OPEN;
> @@ -211,15 +195,9 @@ static void test_fanotify(unsigned int n)
> * Now ignore open & close events regardless of file
> * modifications
> */
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD | mark->flag |
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD | mark->flag |
> FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY,
> - FAN_OPEN | FAN_CLOSE, AT_FDCWD, fname) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD | %s | "
> - "FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY, "
> - "FAN_OPEN | FAN_CLOSE, AT_FDCWD, %s) failed",
> - fd_notify, mark->name, fname);
> - }
> + FAN_OPEN | FAN_CLOSE, AT_FDCWD, fname);
>
> /* This event should be ignored */
> fd = SAFE_OPEN(fname, O_RDWR);
> @@ -240,15 +218,9 @@ static void test_fanotify(unsigned int n)
> len += ret;
>
> /* Now remove open and close from ignored mask */
> - if (fanotify_mark(fd_notify,
> + SAFE_FANOTIFY_MARK(fd_notify,
> FAN_MARK_REMOVE | mark->flag | FAN_MARK_IGNORED_MASK,
> - FAN_OPEN | FAN_CLOSE, AT_FDCWD, fname) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_REMOVE | %s | "
> - "FAN_MARK_IGNORED_MASK, FAN_OPEN | FAN_CLOSE, "
> - "AT_FDCWD, %s) failed", fd_notify,
> - mark->name, fname);
> - }
> + FAN_OPEN | FAN_CLOSE, AT_FDCWD, fname);
>
> SAFE_CLOSE(fd);
> event_set[tst_count] = FAN_CLOSE_WRITE;
> @@ -344,14 +316,9 @@ pass:
>
> }
> /* Remove mark to clear FAN_MARK_IGNORED_SURV_MODIFY */
> - if (fanotify_mark(fd_notify, FAN_MARK_REMOVE | mark->flag,
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_REMOVE | mark->flag,
> FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN,
> - AT_FDCWD, fname) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_REMOVE | %s, FAN_ACCESS | "
> - "FAN_MODIFY | FAN_CLOSE | FAN_OPEN, AT_FDCWD, %s) "
> - "failed", fd_notify, mark->name, fname);
> - }
> + AT_FDCWD, fname);
>
> SAFE_CLOSE(fd_notify);
> }
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify02.c b/testcases/kernel/syscalls/fanotify/fanotify02.c
> index c578e0ae8..36c87648e 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify02.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify02.c
> @@ -46,16 +46,9 @@ void test01(void)
>
> int tst_count = 0;
>
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD, FAN_ACCESS |
> - FAN_MODIFY | FAN_CLOSE | FAN_OPEN |
> - FAN_EVENT_ON_CHILD | FAN_ONDIR, AT_FDCWD,
> - ".") < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD, FAN_ACCESS | "
> - "FAN_MODIFY | FAN_CLOSE | FAN_OPEN | "
> - "FAN_EVENT_ON_CHILD | FAN_ONDIR, AT_FDCWD, '.') "
> - "failed", fd_notify);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD, FAN_ACCESS |
> + FAN_MODIFY | FAN_CLOSE | FAN_OPEN | FAN_EVENT_ON_CHILD |
> + FAN_ONDIR, AT_FDCWD, ".");
>
> /*
> * generate sequence of events
> @@ -102,13 +95,8 @@ void test01(void)
> /*
> * now remove child mark
> */
> - if (fanotify_mark(fd_notify, FAN_MARK_REMOVE,
> - FAN_EVENT_ON_CHILD, AT_FDCWD, ".") < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK REMOVE, "
> - "FAN_EVENT_ON_CHILD, AT_FDCWD, '.') failed",
> - fd_notify);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_REMOVE,
> + FAN_EVENT_ON_CHILD, AT_FDCWD, ".");
>
> /*
> * Do something to verify events didn't get generated
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify03.c b/testcases/kernel/syscalls/fanotify/fanotify03.c
> index fbec652f6..e98694a66 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify03.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify03.c
> @@ -221,22 +221,8 @@ static int setup_mark(unsigned int n)
> fd_notify = SAFE_FANOTIFY_INIT(FAN_CLASS_CONTENT, O_RDONLY);
>
> for (; i < ARRAY_SIZE(files); i++) {
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD | mark->flag,
> - tc->mask, AT_FDCWD, files[i]) < 0) {
> - if (errno == EINVAL &&
> - mark->flag == FAN_MARK_FILESYSTEM) {
> - tst_res(TCONF,
> - "FAN_MARK_FILESYSTEM not supported in "
> - "kernel?");
> - return -1;
Here as well.
> - } else {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | %s, "
> - "FAN_ACCESS_PERM | FAN_OPEN_PERM, "
> - "AT_FDCWD, %s) failed.",
> - fd_notify, mark->name, fname);
> - }
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD | mark->flag,
> + tc->mask, AT_FDCWD, files[i]);
> }
>
> return 0;
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify04.c b/testcases/kernel/syscalls/fanotify/fanotify04.c
> index 722ad5d41..a24e7f7c3 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify04.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify04.c
> @@ -77,13 +77,8 @@ static void check_mark(char *file, unsigned long long flag, char *flagstr,
> if (test_event)
> test_event(file);
>
> - if (fanotify_mark(fd_notify, FAN_MARK_REMOVE | flag,
> - FAN_OPEN, AT_FDCWD, file) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_REMOVE | %s, "
> - "FAN_OPEN, AT_FDCWD, '%s') failed",
> - fd_notify, flagstr, file);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_REMOVE | flag,
> + FAN_OPEN, AT_FDCWD, file);
> }
> }
>
> @@ -191,29 +186,14 @@ void test01(void)
> CHECK_MARK(sname, 0, 0, test_open_file);
>
> /* Verify FAN_MARK_FLUSH destroys all inode marks */
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD,
> - FAN_OPEN, AT_FDCWD, fname) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD, FAN_OPEN, "
> - "AT_FDCWD, '%s') failed", fd_notify, fname);
> - }
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD,
> - FAN_OPEN | FAN_ONDIR, AT_FDCWD, dir) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD, FAN_OPEN | "
> - "FAN_ONDIR, AT_FDCWD, '%s') failed", fd_notify,
> - dir);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD, FAN_OPEN, AT_FDCWD, fname);
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD, FAN_OPEN | FAN_ONDIR,
> + AT_FDCWD, dir);
> open_file(fname);
> verify_event(S_IFREG);
> open_dir(dir);
> verify_event(S_IFDIR);
> - if (fanotify_mark(fd_notify, FAN_MARK_FLUSH,
> - 0, AT_FDCWD, ".") < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_FLUSH, 0, "
> - "AT_FDCWD, '.') failed", fd_notify);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_FLUSH, 0, AT_FDCWD, ".");
>
> open_dir(dir);
> verify_no_event();
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify05.c b/testcases/kernel/syscalls/fanotify/fanotify05.c
> index e53cc333a..c13b9ad7b 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify05.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify05.c
> @@ -107,13 +107,8 @@ static void setup(void)
> fd_notify = SAFE_FANOTIFY_INIT(FAN_CLASS_NOTIF | FAN_NONBLOCK,
> O_RDONLY);
>
> - if (fanotify_mark(fd_notify, FAN_MARK_MOUNT | FAN_MARK_ADD, FAN_OPEN,
> - AT_FDCWD, MOUNT_PATH) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_MOUNT | FAN_MARK_ADD, "
> - "FAN_OPEN, AT_FDCWD, \".\") failed",
> - fd_notify);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_MOUNT | FAN_MARK_ADD, FAN_OPEN,
> + AT_FDCWD, MOUNT_PATH);
> }
>
> static void cleanup(void)
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify06.c b/testcases/kernel/syscalls/fanotify/fanotify06.c
> index 99e312a4f..ac4901f6f 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify06.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify06.c
> @@ -78,7 +78,6 @@ static struct tcase {
> static void create_fanotify_groups(void)
> {
> unsigned int p, i;
> - int ret;
>
> for (p = 0; p < FANOTIFY_PRIORITIES; p++) {
> for (i = 0; i < GROUPS_PER_PRIO; i++) {
> @@ -87,32 +86,20 @@ static void create_fanotify_groups(void)
> O_RDONLY);
>
> /* Add mount mark for each group */
> - ret = fanotify_mark(fd_notify[p][i],
> + SAFE_FANOTIFY_MARK(fd_notify[p][i],
> FAN_MARK_ADD | FAN_MARK_MOUNT,
> FAN_MODIFY,
> AT_FDCWD, fname);
> - if (ret < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | "
> - "FAN_MARK_MOUNT, FAN_MODIFY, AT_FDCWD,"
> - " %s) failed", fd_notify[p][i], fname);
> - }
> +
> /* Add ignore mark for groups with higher priority */
> if (p == 0)
> continue;
> - ret = fanotify_mark(fd_notify[p][i],
> +
> + SAFE_FANOTIFY_MARK(fd_notify[p][i],
> FAN_MARK_ADD |
> FAN_MARK_IGNORED_MASK |
> FAN_MARK_IGNORED_SURV_MODIFY,
> FAN_MODIFY, AT_FDCWD, fname);
> - if (ret < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | "
> - "FAN_MARK_IGNORED_MASK | "
> - "FAN_MARK_IGNORED_SURV_MODIFY, "
> - "FAN_MODIFY, AT_FDCWD, %s) failed",
> - fd_notify[p][i], fname);
> - }
> }
> }
> }
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify07.c b/testcases/kernel/syscalls/fanotify/fanotify07.c
> index f4e8ac9e6..8b2c1c4c9 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify07.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify07.c
> @@ -102,20 +102,7 @@ static int setup_instance(void)
> int fd;
>
> fd = SAFE_FANOTIFY_INIT(FAN_CLASS_CONTENT, O_RDONLY);
> -
> - if (fanotify_mark(fd, FAN_MARK_ADD, FAN_ACCESS_PERM, AT_FDCWD,
> - fname) < 0) {
> - close(fd);
> - if (errno == EINVAL) {
> - tst_brk(TCONF | TERRNO,
> - "CONFIG_FANOTIFY_ACCESS_PERMISSIONS not "
> - "configured in kernel?");
> - } else {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, FAN_MARK_ADD, FAN_ACCESS_PERM, "
> - "AT_FDCWD, %s) failed.", fd, fname);
> - }
> - }
> + SAFE_FANOTIFY_MARK(fd, FAN_MARK_ADD, FAN_ACCESS_PERM, AT_FDCWD, fname);
>
> return fd;
> }
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify09.c b/testcases/kernel/syscalls/fanotify/fanotify09.c
> index 83210bc1c..9c9938619 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify09.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify09.c
> @@ -99,7 +99,6 @@ static void create_fanotify_groups(struct tcase *tc)
> {
> struct fanotify_mark_type *mark = &tc->mark;
> unsigned int i, onchild, ondir = tc->ondir;
> - int ret;
>
> for (i = 0; i < NUM_GROUPS; i++) {
> fd_notify[i] = SAFE_FANOTIFY_INIT(FAN_CLASS_NOTIF |
> @@ -111,17 +110,11 @@ static void create_fanotify_groups(struct tcase *tc)
> * but only the first group requests events on dir.
> */
> onchild = (i == 0) ? FAN_EVENT_ON_CHILD | ondir : 0;
> - ret = fanotify_mark(fd_notify[i],
> + SAFE_FANOTIFY_MARK(fd_notify[i],
> FAN_MARK_ADD | mark->flag,
> FAN_CLOSE_NOWRITE | onchild,
> AT_FDCWD, tc->testdir);
> - if (ret < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | %s, "
> - "%x, AT_FDCWD, '%s') failed",
> - fd_notify[i], mark->name,
> - FAN_CLOSE_NOWRITE | ondir, tc->testdir);
> - }
> +
> /*
> * Add inode mark on parent for each group with MODIFY event,
> * but only the first group requests events on child.
> @@ -129,15 +122,9 @@ static void create_fanotify_groups(struct tcase *tc)
> * setting the DCACHE_FSNOTIFY_PARENT_WATCHED dentry
> * flag.
> */
> - ret = fanotify_mark(fd_notify[i], FAN_MARK_ADD,
> + SAFE_FANOTIFY_MARK(fd_notify[i], FAN_MARK_ADD,
> FAN_MODIFY | ondir | onchild,
> AT_FDCWD, ".");
> - if (ret < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD, "
> - "%x, AT_FDCWD, '.') failed",
> - fd_notify[i], FAN_MODIFY | ondir | onchild);
> - }
> }
> }
>
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify10.c b/testcases/kernel/syscalls/fanotify/fanotify10.c
> index b95efb998..ab906f3fb 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify10.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify10.c
> @@ -288,7 +288,6 @@ static int create_fanotify_groups(unsigned int n)
> struct fanotify_mark_type *mark, *ignore_mark;
> unsigned int mark_ignored, mask;
> unsigned int p, i;
> - int ret;
>
> mark = &fanotify_mark_types[tc->mark_type];
> ignore_mark = &fanotify_mark_types[tc->ignore_mark_type];
> @@ -317,32 +316,12 @@ static int create_fanotify_groups(unsigned int n)
> * FAN_EVENT_ON_CHILD has no effect on filesystem/mount
> * or inode mark on non-directory.
> */
> - ret = fanotify_mark(fd_notify[p][i],
> + SAFE_FANOTIFY_MARK(fd_notify[p][i],
> FAN_MARK_ADD | mark->flag,
> tc->expected_mask_without_ignore |
> FAN_EVENT_ON_CHILD,
> AT_FDCWD, tc->mark_path);
> - if (ret < 0) {
> - if (errno == EINVAL &&
> - tc->expected_mask_without_ignore &
> - FAN_OPEN_EXEC) {
> - tst_res(TCONF,
> - "FAN_OPEN_EXEC not supported "
> - "by kernel?");
> - return -1;
> - } else if (errno == EINVAL &&
> - tc->mark_type == FANOTIFY_FILESYSTEM) {
> - tst_res(TCONF,
> - "FAN_MARK_FILESYSTEM not "
> - "supported in kernel?");
> - return -1;
> - }
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | %s,"
> - "FAN_OPEN, AT_FDCWD, %s) failed",
> - fd_notify[p][i], mark->name,
> - tc->mark_path);
> - }
> +
> /* Add ignore mark for groups with higher priority */
> if (p == 0)
> continue;
> @@ -351,18 +330,9 @@ static int create_fanotify_groups(unsigned int n)
> mark_ignored = FAN_MARK_IGNORED_MASK |
> FAN_MARK_IGNORED_SURV_MODIFY;
> add_mark:
> - ret = fanotify_mark(fd_notify[p][i],
> + SAFE_FANOTIFY_MARK(fd_notify[p][i],
> FAN_MARK_ADD | ignore_mark->flag | mark_ignored,
> mask, AT_FDCWD, tc->ignore_path);
> - if (ret < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | %s | %s, "
> - "%x, AT_FDCWD, %s) failed",
> - fd_notify[p][i], ignore_mark->name,
> - mark_ignored ? "FAN_MARK_IGNORED_MASK | "
> - "FAN_MARK_IGNORED_SURV_MODIFY" : "",
> - mask, tc->ignore_path);
> - }
>
> /*
> * If ignored mask is on a parent watching children,
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify11.c b/testcases/kernel/syscalls/fanotify/fanotify11.c
> index 9e8606c72..56b7153f8 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify11.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify11.c
> @@ -55,7 +55,6 @@ static unsigned int tcases[] = {
>
> void test01(unsigned int i)
> {
> - int ret;
> pthread_t p_id;
> struct fanotify_event_metadata event;
> int fd_notify;
> @@ -76,10 +75,8 @@ void test01(unsigned int i)
> tcases[i]);
> }
>
> - ret = fanotify_mark(fd_notify, FAN_MARK_ADD,
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD,
> FAN_ALL_EVENTS | FAN_EVENT_ON_CHILD, AT_FDCWD, ".");
> - if (ret != 0)
> - tst_brk(TBROK, "fanotify_mark FAN_MARK_ADD fail ret=%d", ret);
>
> SAFE_PTHREAD_CREATE(&p_id, NULL, thread_create_file, NULL);
>
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify12.c b/testcases/kernel/syscalls/fanotify/fanotify12.c
> index bddbdc37c..9adf8bc8a 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify12.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify12.c
> @@ -146,31 +146,15 @@ static int setup_mark(unsigned int n)
>
> for (; i < ARRAY_SIZE(files); i++) {
> /* Setup normal mark on object */
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD | mark->flag,
> - tc->mask, AT_FDCWD, files[i]) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD | %s, "
> - "%llx, AT_FDCWD, %s) failed",
> - fd_notify,
> - mark->name,
> - tc->mask,
> - files[i]);
> - }
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD | mark->flag,
> + tc->mask, AT_FDCWD, files[i]);
>
> /* Setup ignore mark on object */
> if (tc->ignore_mask) {
> - if (fanotify_mark(fd_notify, FAN_MARK_ADD | mark->flag
> + SAFE_FANOTIFY_MARK(fd_notify, FAN_MARK_ADD | mark->flag
> | FAN_MARK_IGNORED_MASK,
> tc->ignore_mask, AT_FDCWD,
> - files[i]) < 0) {
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark (%d, "
> - "FAN_MARK_ADD | %s "
> - "| FAN_MARK_IGNORED_MASK, "
> - "%llx, AT_FDCWD, %s) failed",
> - fd_notify, mark->name,
> - tc->ignore_mask, files[i]);
> - }
> + files[i]);
> }
> }
>
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify13.c b/testcases/kernel/syscalls/fanotify/fanotify13.c
> index c2a21bb66..997efaf08 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify13.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify13.c
> @@ -116,28 +116,8 @@ static int setup_marks(unsigned int fd, struct test_case_t *tc)
> struct fanotify_mark_type *mark = &tc->mark;
>
> for (i = 0; i < ARRAY_SIZE(objects); i++) {
> - if (fanotify_mark(fd, FAN_MARK_ADD | mark->flag, tc->mask,
> - AT_FDCWD, objects[i].path) == -1) {
> - if (errno == EINVAL &&
> - mark->flag & FAN_MARK_FILESYSTEM) {
> - tst_res(TCONF,
> - "FAN_MARK_FILESYSTEM not supported by "
> - "kernel");
> - return 1;
> - } else if (errno == ENODEV &&
> - !objects[i].fid.fsid.val[0] &&
> - !objects[i].fid.fsid.val[1]) {
> - tst_res(TCONF,
> - "FAN_REPORT_FID not supported on "
> - "filesystem type %s",
> - tst_device->fs_type);
> - return 1;
And here as well.
> - }
> - tst_brk(TBROK | TERRNO,
> - "fanotify_mark(%d, FAN_MARK_ADD, FAN_OPEN, "
> - "AT_FDCWD, %s) failed",
> - fanotify_fd, objects[i].path);
> - }
> + SAFE_FANOTIFY_MARK(fd, FAN_MARK_ADD | mark->flag, tc->mask,
> + AT_FDCWD, objects[i].path);
>
> /* Setup the expected mask for each generated event */
> event_set[i].expected_mask = tc->mask;
Otherwise it looks like a nice cleanup.
--
Cyril Hrubis
chrubis@suse.cz
next prev parent reply other threads:[~2020-11-19 10:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-13 16:49 [LTP] [PATCH v3 0/5] Introduce SAFE_FANOTIFY_MARK() macro + cleanup Petr Vorel
2020-11-13 16:49 ` [LTP] [PATCH v3 1/5] fanotify12: Drop incorrect hint Petr Vorel
2020-11-19 10:06 ` Cyril Hrubis
2020-11-13 16:49 ` [LTP] [PATCH v3 2/5] fanotify: Handle supported features checks in setup() Petr Vorel
2020-11-19 10:16 ` Cyril Hrubis
2020-11-25 16:56 ` Petr Vorel
2020-11-13 16:49 ` [LTP] [PATCH v3 3/5] fanotify: Introduce SAFE_FANOTIFY_MARK() macro Petr Vorel
2020-11-19 10:27 ` Cyril Hrubis [this message]
2020-11-19 10:54 ` Amir Goldstein
2020-11-25 14:16 ` Petr Vorel
2020-11-25 15:41 ` Amir Goldstein
2020-11-25 18:24 ` Petr Vorel
2020-11-25 19:55 ` Amir Goldstein
2020-11-25 20:25 ` Petr Vorel
2020-11-26 3:00 ` Amir Goldstein
2020-11-13 16:49 ` [LTP] [PATCH v3 4/5] fanotify: Check FAN_REPORT_{FID, NAME} support Petr Vorel
2020-11-19 10:30 ` Cyril Hrubis
2020-11-13 16:49 ` [LTP] [PATCH v3 5/5] fanotify: Add a pedantic check for return value Petr Vorel
2020-11-19 10:31 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201119102740.GD2785@yuki.lan \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.