[LTP] [PATCH] syscalls/ioctl_ns: Fix failures on -m32
Cyril Hrubis
chrubis@suse.cz
Wed May 15 11:52:30 CEST 2019
These are not apparently implemented in the 32bit compat layer so the
test were failing with ENOTTY there.
Reported-by: Richard Palethorpe <rpalethorpe@suse.de>
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
testcases/kernel/syscalls/ioctl/ioctl_ns01.c | 3 +++
testcases/kernel/syscalls/ioctl/ioctl_ns02.c | 3 +++
testcases/kernel/syscalls/ioctl/ioctl_ns03.c | 5 +++++
testcases/kernel/syscalls/ioctl/ioctl_ns04.c | 3 +++
testcases/kernel/syscalls/ioctl/ioctl_ns05.c | 13 ++++++++++++-
testcases/kernel/syscalls/ioctl/ioctl_ns06.c | 11 ++++++++++-
6 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns01.c b/testcases/kernel/syscalls/ioctl/ioctl_ns01.c
index f2c77a01a..dfde4da6c 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns01.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns01.c
@@ -40,6 +40,9 @@ static void test_ns_get_parent(void)
fd = SAFE_OPEN("/proc/self/ns/pid", O_RDONLY);
parent_fd = ioctl(fd, NS_GET_PARENT);
if (parent_fd == -1) {
+ if (errno == ENOTTY)
+ tst_brk(TCONF, "ioctl(NS_GET_PARENT) not implemented");
+
if (errno == EPERM)
tst_res(TPASS, "NS_GET_PARENT fails with EPERM");
else
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns02.c b/testcases/kernel/syscalls/ioctl/ioctl_ns02.c
index 4f5cb1427..33ef757a8 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns02.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns02.c
@@ -32,6 +32,9 @@ static void run(void)
fd = SAFE_OPEN("/proc/self/ns/uts", O_RDONLY);
parent_fd = ioctl(fd, NS_GET_PARENT);
if (parent_fd == -1) {
+ if (errno == ENOTTY)
+ tst_brk(TCONF, "ioctl(NS_GET_PARENT) not implemented");
+
if (errno == EINVAL)
tst_res(TPASS, "NS_GET_PARENT fails with EINVAL");
else
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns03.c b/testcases/kernel/syscalls/ioctl/ioctl_ns03.c
index 2e19cff3a..279032d20 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns03.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns03.c
@@ -33,6 +33,11 @@ static void run(void)
owner_fd = ioctl(fd, NS_GET_OWNER_UID, &uid);
if (owner_fd == -1) {
+ if (errno == ENOTTY) {
+ tst_brk(TCONF,
+ "ioctl(NS_GET_OWNER_UID) not implemented");
+ }
+
if (errno == EINVAL)
tst_res(TPASS, "NS_GET_OWNER_UID fails, UTS namespace");
else
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns04.c b/testcases/kernel/syscalls/ioctl/ioctl_ns04.c
index b9181cb3d..90035cbeb 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns04.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns04.c
@@ -31,6 +31,9 @@ static void run(void)
fd = SAFE_OPEN("/proc/self/ns/user", O_RDONLY);
parent_fd = ioctl(fd, NS_GET_USERNS);
if (parent_fd == -1) {
+ if (errno == ENOTTY)
+ tst_brk(TCONF, "ioctl(NS_GET_USERNS) not implemented");
+
if (errno == EPERM)
tst_res(TPASS, "NS_GET_USERNS fails with EPERM");
else
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns05.c b/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
index bdef4d6e9..a8dee07a1 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
@@ -53,7 +53,18 @@ static void run(void)
sprintf(child_namespace, "/proc/%i/ns/pid", pid);
my_fd = SAFE_OPEN("/proc/self/ns/pid", O_RDONLY);
child_fd = SAFE_OPEN(child_namespace, O_RDONLY);
- parent_fd = SAFE_IOCTL(child_fd, NS_GET_PARENT);
+ parent_fd = ioctl(child_fd, NS_GET_PARENT);
+
+ if (parent_fd == -1) {
+ TST_CHECKPOINT_WAKE(0);
+
+ if (errno == ENOTTY) {
+ tst_res(TCONF, "ioctl(NS_GET_PARENT) not implemented");
+ return;
+ }
+
+ tst_brk(TBROK | TERRNO, "ioctl(NS_GET_PARENT) failed");
+ }
struct stat my_stat, child_stat, parent_stat;
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns06.c b/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
index eabb7e49c..805a0a072 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
@@ -50,7 +50,16 @@ static void run(void)
my_fd = SAFE_OPEN("/proc/self/ns/user", O_RDONLY);
child_fd = SAFE_OPEN(child_namespace, O_RDONLY);
- parent_fd = SAFE_IOCTL(child_fd, NS_GET_USERNS);
+ parent_fd = ioctl(child_fd, NS_GET_USERNS);
+
+ if (parent_fd == -1) {
+ TST_CHECKPOINT_WAKE(0);
+
+ if (errno == ENOTTY)
+ tst_brk(TCONF, "ioctl(NS_GET_USERNS) not implemented");
+
+ tst_brk(TBROK | TERRNO, "ioctl(NS_GET_USERNS) failed");
+ }
struct stat my_stat, child_stat, parent_stat;
--
2.19.2
More information about the ltp
mailing list