syscalls/fsetxattr02.c: Fix the failure of opening device files

Message ID 1533744069-24715-1-git-send-email-yangx.jy@cn.fujitsu.com
State Superseded
Headers show
Series
  • syscalls/fsetxattr02.c: Fix the failure of opening device files
Related show

Commit Message

Xiao Yang Aug. 8, 2018, 4:01 p.m.
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

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
 testcases/kernel/syscalls/fsetxattr/fsetxattr02.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Comments

Rafael David Tinoco Aug. 9, 2018, 2:57 p.m. | #1
> --- a/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
> +++ b/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
> @@ -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
Xiao Yang Aug. 10, 2018, 12:13 a.m. | #2
On 2018/08/09 22:57, Rafael David Tinoco wrote:
>> --- a/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
>> +++ b/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
>> @@ -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".
Hi Rafael,

Sorry for this rough fix, and i will send v2 patch as you suggested.

Thanks,
Xiao Yang
> -Rafael
>
>
>

Patch

diff --git a/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c b/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
index a1be652..356e527 100644
--- a/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
+++ b/testcases/kernel/syscalls/fsetxattr/fsetxattr02.c
@@ -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 = {