syscalls/fsetxattr02.c: Fix the failure of opening device files
PATCH 1/1 syscalls/fsetxattr02.c: Fix the failure of opening device files
If temporary directory(TMPDIR/TEMPDIR) is on the mountpoint which
is mounted with nodev option or temporary directory is mounted with with nodev option directly(e.g. tmpfs is mounted on /tmp), open(2)
has no permission to open device files in the temporary directory
and returned EACCES. as below:
--------------------------------------------------------------------
safe_macros.c:225: BROK: fsetxattr02.c:215: open(fsetxattr02chr,0,00) failed: EACCES
--------------------------------------------------------------------
We try to fix this issue by creating device files in /dev/ instead.
This is the same issue reported by open11, please see the mail:
http://lists.linux.it/pipermail/ltp/2018-July/008641.html
--- testcases/kernel/syscalls/fsetxattr/fsetxattr02.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c +10 -3
@@ -52,11 +52,13 @@#define FILENAME "fsetxattr02testfile"#define DIRNAME "fsetxattr02testdir"#define SYMLINK "fsetxattr02symlink" -#define FIFO "fsetxattr02fifo" -#define CHR "fsetxattr02chr" -#define BLK "fsetxattr02blk" +#define FIFO "/dev/fsetxattr02fifo" +#define CHR "/dev/fsetxattr02chr" +#define BLK "/dev/fsetxattr02blk"#define SOCK "fsetxattr02sock" +static char *dev_files[3 ] = {FIFO ,CHR ,BLK }; +struct test_case {char *fname;int fd;
@@ -240,6 +242,11 @@ static void cleanup(void)if (tc[i].fd >0 )SAFE_CLOSE (tc[i].fd); } + +for (i =0 ; i <ARRAY_SIZE (dev_files); i++) { +if (!access (dev_files[i],F_OK )) +SAFE_UNLINK (dev_files[i]); + } }static struct tst_test test = {
Signature · 1 line
1.8.3.1
PATCH 1/1 syscalls/fsetxattr02.c: Fix the failure of opening device files
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c line 57
Quoted 12 lines
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c +3
-3@@ -52,11 +52,13 @@#define FILENAME "fsetxattr02testfile"#define DIRNAME "fsetxattr02testdir"#define SYMLINK "fsetxattr02symlink" -#define FIFO "fsetxattr02fifo" -#define CHR "fsetxattr02chr" -#define BLK "fsetxattr02blk" +#define FIFO "/dev/fsetxattr02fifo" +#define CHR "/dev/fsetxattr02chr" +#define BLK "/dev/fsetxattr02blk"
Thanks for catching this!! Minor issue: This will break OFFSET logic for tst_res() messages. They are skipping 11 chars because all files started with "fsetxattr02".
-Rafael
PATCH v2 1/1 syscalls/fsetxattr02.c: Fix the failure of opening device files
If temporary directory(TMPDIR/TEMPDIR) is on the mountpoint which
is mounted with nodev option or temporary directory is mounted with with nodev option directly(e.g. tmpfs is mounted on /tmp), open(2)
has no permission to open device files in the temporary directory
and returns EACCES. as below:
--------------------------------------------------------------------
safe_macros.c:225: BROK: fsetxattr02.c:215: open(fsetxattr02chr,0,00) failed: EACCES
--------------------------------------------------------------------
We try to fix this issue by creating device files in /dev/ instead.
This is the same issue reported by open11, please see the mail:
http://lists.linux.it/pipermail/ltp/2018-July/008641.html
Changes in v2:
Acquire basename to avoid breaking OFFSET logic.
--- testcases/kernel/syscalls/fsetxattr/fsetxattr02.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c +13 -3
@@ -52,11 +52,13 @@#define FILENAME "fsetxattr02testfile"#define DIRNAME "fsetxattr02testdir"#define SYMLINK "fsetxattr02symlink" -#define FIFO "fsetxattr02fifo" -#define CHR "fsetxattr02chr" -#define BLK "fsetxattr02blk" +#define FIFO "/dev/fsetxattr02fifo" +#define CHR "/dev/fsetxattr02chr" +#define BLK "/dev/fsetxattr02blk"#define SOCK "fsetxattr02sock" +static char *dev_files[3 ] = {FIFO ,CHR ,BLK }; +struct test_case {char *fname;int fd;
@@ -139,6 +141,9 @@ static struct test_case tc[] = {static void verify_fsetxattr (unsigned int i) { +/* acquire basename to avoid breaking OFFSET logic*/ + tc[i].fname =strstr (tc[i].fname,"fsetxattr02" ); +/* some tests might require existing keys for each iteration */ if (tc[i].needskeyset) { SAFE_FSETXATTR(tc[i].fd, tc[i].key, tc[i].value, tc[i].size,
@@ -240,6 +245,11 @@ static void cleanup(void)if (tc[i].fd >0 )SAFE_CLOSE (tc[i].fd); } + +for (i =0 ; i <ARRAY_SIZE (dev_files); i++) { +if (!access (dev_files[i],F_OK )) +SAFE_UNLINK (dev_files[i]); + } }static struct tst_test test = {
Signature · 1 line
1.8.3.1
PATCH v2 1/1 syscalls/fsetxattr02.c: Fix the failure of opening device files
Hi!
Quoted 1 line
We try to fix this issue by creating device files in
/dev/instead.
I do not like much that we are messing up with the system directories.
Maybe we could mount a tmpfs over a directory in the test temporary directory if we detect that the test temporary directory is mounted with nodev. The downsinde is that it will be a bit more complicated than this solution.
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH 1/1 syscalls/fsetxattr02.c: Fix the failure of opening device files
In reply to Rafael David TinocoQuoted 7 lines · Rafael David Tinoco
Quoted 7 lines
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c +0
-1@@ -52,11 +52,13 @@#define FILENAME "fsetxattr02testfile"#define DIRNAME "fsetxattr02testdir"#define SYMLINK "fsetxattr02symlink" -#define FIFO "fsetxattr02fifo"
Quoted 8 lines
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c line 57
Quoted 5 lines
testcases/kernel/syscalls/fsetxattr/fsetxattr02.c +3
-2-#define CHR "fsetxattr02chr" -#define BLK "fsetxattr02blk" +#define FIFO "/dev/fsetxattr02fifo" +#define CHR "/dev/fsetxattr02chr" +#define BLK "/dev/fsetxattr02blk"Thanks for catching this!! Minor issue: This will break OFFSET logic for
tst_res()messages. They are skipping 11 chars because all files started with "fsetxattr02".
Hi Rafael,
Sorry for this rough fix, and i will send v2 patch as you suggested.
Thanks,
Xiao Yang
Quoted 4 lines
-Rafael