From: Petr Vorel <pvorel@suse.cz>
To: Wei Gao <wegao@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v1] chmod02.c: Block mode changes of symlinks
Date: Fri, 10 May 2024 13:35:14 +0200 [thread overview]
Message-ID: <20240510113514.GA417271@pevik> (raw)
In-Reply-To: <20240510002331.31431-1-wegao@suse.com>
Hi Wei,
...
> testcases/kernel/syscalls/chmod/chmod02.c | 68 ++++++++++++++++++++++
nit: original chmod02.c was removed in eab36ea01, now you are using this
filename again. I don't remember if there is any consensus about reusing test
name (maybe it's ok), but I would prefer to create new file (i.e. chmod08.c),
because reusing names can lead to confusion (people may not notice when looking
into git history that these 2 tests are completely unrelated. If nothing,
different GPL version can be taken by mistake (e.g. original chmod02.c used GPL
2 only license).
...
> +/*\
> + * [Description]
> + *
> + * Test for kernel commit 5d1f903f75a80daa4dfb3d84e114ec8ecbf29956
> + * "attr: block mode changes of symlinks".
nit: 5d1f903f75a8 ("attr: block mode changes of symlinks")
> + *
nit: please remove this blank line above.
> + */
> +
> +#include "lapi/fcntl.h"
> +#include "tst_test.h"
> +
> +#define MODE 0644
> +#define TESTFILE "testfile"
> +#define TESTFILE_SYMLINK "testfile_symlink"
> +
> +static void run(void)
> +{
> + struct stat stat_file, stat_sym;
> + int mode = 0;
> + char fd_path[100];
> +
> + int fd = SAFE_OPEN(TESTFILE_SYMLINK, O_PATH | O_NOFOLLOW);
> +
> + sprintf(fd_path, "/proc/self/fd/%d", fd);
> +
> + TST_EXP_FAIL(chmod(fd_path, mode), ENOTSUP, "chmod(%s, %04o)",
> + TESTFILE_SYMLINK, mode);
> +
> + SAFE_STAT(TESTFILE, &stat_file);
> + SAFE_LSTAT(TESTFILE_SYMLINK, &stat_sym);
> +
> + stat_file.st_mode &= ~S_IFREG;
> + stat_sym.st_mode &= ~S_IFLNK;
> +
> + if (stat_file.st_mode == (unsigned int)mode) {
> + tst_res(TFAIL, "stat(%s) mode=%04o",
> + TESTFILE, stat_file.st_mode);
> + } else {
> + tst_res(TPASS, "stat(%s) mode=%04o",
> + TESTFILE, stat_file.st_mode);
> + }
Maybe using TST_EXP_EXPR() to not repeat yourself?
> +
> + if (stat_sym.st_mode == (unsigned int)mode) {
> + tst_res(TFAIL, "stat(%s) mode=%04o",
> + TESTFILE_SYMLINK, stat_sym.st_mode);
> + } else {
> + tst_res(TPASS, "stat(%s) mode=%04o",
> + TESTFILE_SYMLINK, stat_sym.st_mode);
> + }
And here as well?
Missing SAFE_CLOSE(fd); causes EMFILE (Too many open files) failure on high -i
(e.g. -i 1100).
> +}
> +
> +static void setup(void)
> +{
> + SAFE_TOUCH(TESTFILE, MODE, NULL);
> + SAFE_SYMLINK(TESTFILE, TESTFILE_SYMLINK);
> +}
> +
> +static struct tst_test test = {
> + .setup = setup,
> + .test_all = run,
> + .needs_tmpdir = 1,
> + .min_kver = "6.6",
Looking into kernel commit [1] it's in VFS therefore it should be safe to test
it on single filesystem which is in TMPDIR (i.e. not using .all_filesystems).
But "If this causes any regressions" and "It's a simple patch that can be easily
reverted." suggests that we should think twice when not running it with
.all_filesystems (if used, exfat and vfat fails with EPERM, but it works
on NTFS).
Kind regards,
Petr
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5d1f903f75a80daa4dfb3d84e114ec8ecbf29956
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-05-10 11:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-10 0:23 [LTP] [PATCH v1] chmod02.c: Block mode changes of symlinks Wei Gao via ltp
2024-05-10 11:35 ` Petr Vorel [this message]
2024-05-24 8:56 ` [LTP] [PATCH v2] chmod08.c: " Wei Gao via ltp
2024-05-29 11:01 ` Andrea Cervesato via ltp
2024-09-17 8:28 ` Cyril Hrubis
2024-05-29 11:58 ` [LTP] [PATCH v3] chmod09.c: " Wei Gao via ltp
2024-09-17 8:42 ` 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=20240510113514.GA417271@pevik \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
--cc=wegao@suse.com \
/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.