[LTP] [PATCH v4 1/3] syscalls/creat09: Add umask test condition

xuyang2018.jy@fujitsu.com xuyang2018.jy@fujitsu.com
Wed Sep 14 09:49:38 CEST 2022


Hi All

> A kernel patch set that fix setgid strip logic under umask(S_IXGRP) found by
> this case has been merged into 6.0-rc1 kernel[1].
> 
> I will add acl and umask test[2] in xfstests because there is more suitable
> to do this.
> 
> Here I just only add umask test condition simply.
> 
> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1639a49c
> [2]https://patchwork.kernel.org/project/fstests/list/?series=662984

I Should update the [2] url because the corresponding patch is in 
xfstest for-next branch.

[2]https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/commit/?h=for-next&id=c875434286737e792d200cda2eb679e2a8441837

Also miss Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org> tag.

Best Regards
Yang Xu
> 
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
>   testcases/kernel/syscalls/creat/creat09.c | 30 +++++++++++++++++++++--
>   1 file changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/creat/creat09.c b/testcases/kernel/syscalls/creat/creat09.c
> index bed7bddb0..d583cceca 100644
> --- a/testcases/kernel/syscalls/creat/creat09.c
> +++ b/testcases/kernel/syscalls/creat/creat09.c
> @@ -28,6 +28,16 @@
>    *  Date:   Fri Jan 22 16:48:18 2021 -0800
>    *
>    *  xfs: fix up non-directory creation in SGID directories
> + *
> + * When use acl or umask, it still has bug.
> + *
> + * Fixed in:
> + *
> + *  commit 1639a49ccdce58ea248841ed9b23babcce6dbb0b
> + *  Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> + *  Date:   Thu July 14 14:11:27 2022 +0800
> + *
> + *  fs: move S_ISGID stripping into the vfs_*() helpers
>    */
>   
>   #include <stdlib.h>
> @@ -47,6 +57,14 @@
>   static gid_t free_gid;
>   static int fd = -1;
>   
> +static struct tcase {
> +	const char *msg;
> +	int mask;
> +} tcases[] = {
> +	{"under umask(0) situation", 0},
> +	{"under umask(S_IXGRP) situation", S_IXGRP}
> +};
> +
>   static void setup(void)
>   {
>   	struct stat buf;
> @@ -94,8 +112,14 @@ static void file_test(const char *name)
>   		tst_res(TPASS, "%s: Setgid bit not set", name);
>   }
>   
> -static void run(void)
> +static void run(unsigned int n)
>   {
> +	struct tcase *tc = &tcases[n];
> +
> +	umask(tc->mask);
> +	tst_res(TINFO, "Testing setgid behaviour when creating file %s",
> +			tc->msg);
> +
>   	fd = SAFE_CREAT(CREAT_FILE, MODE_SGID);
>   	SAFE_CLOSE(fd);
>   	file_test(CREAT_FILE);
> @@ -115,13 +139,14 @@ static void cleanup(void)
>   }
>   
>   static struct tst_test test = {
> -	.test_all = run,
> +	.test = run,
>   	.setup = setup,
>   	.cleanup = cleanup,
>   	.needs_root = 1,
>   	.all_filesystems = 1,
>   	.mount_device = 1,
>   	.mntpoint = MNTPOINT,
> +	.tcnt = ARRAY_SIZE(tcases),
>   	.skip_filesystems = (const char*[]) {
>   		"exfat",
>   		"ntfs",
> @@ -132,6 +157,7 @@ static struct tst_test test = {
>   		{"linux-git", "0fa3ecd87848"},
>   		{"CVE", "2018-13405"},
>   		{"linux-git", "01ea173e103e"},
> +		{"linux-git", "1639a49ccdce"},
>   		{}
>   	},
>   };


More information about the ltp mailing list