[LTP] [PATCH v1] Avoid messing with system tty in ioctl01.c
Marius Kittler
mkittler@suse.de
Mon Sep 11 14:04:08 CEST 2023
* Use `openpty()` to create a new tty
* Remove `-D` option
* Remove requirement to run as root
Signed-off-by: Marius Kittler <mkittler@suse.de>
---
runtest/syscalls | 2 +-
testcases/kernel/syscalls/ioctl/ioctl01.c | 25 ++++++++++------------
testcases/kernel/syscalls/ioctl/test_ioctl | 23 --------------------
3 files changed, 12 insertions(+), 38 deletions(-)
diff --git a/runtest/syscalls b/runtest/syscalls
index b1125dd75..f999bd74f 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -557,10 +557,10 @@ init_module01 init_module01
init_module02 init_module02
#Needs tty device.
-#ioctl01 ioctl01 -D /dev/tty0
#ioctl02 ioctl02 -D /dev/tty0
# Introducing ioctl tests for all /dev/tty* devices
+ioctl01 ioctl01
ioctl01_02 test_ioctl
ioctl03 ioctl03
ioctl04 ioctl04
diff --git a/testcases/kernel/syscalls/ioctl/ioctl01.c b/testcases/kernel/syscalls/ioctl/ioctl01.c
index 3ca8a9a3b..fe6a5591d 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl01.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl01.c
@@ -23,11 +23,13 @@
#include <fcntl.h>
#include <stdio.h>
#include <termios.h>
+#include <pty.h>
#include "tst_test.h"
#include "lapi/ioctl.h"
#define INVAL_IOCTL 9999999
+static int amaster, aslave;
static int fd, fd_file;
static int bfd = -1;
@@ -59,8 +61,6 @@ static struct tcase {
{&fd, TCGETS, NULL, EFAULT}
};
-static char *device;
-
static void verify_ioctl(unsigned int i)
{
TST_EXP_FAIL(ioctl(*(tcases[i].fd), tcases[i].request, tcases[i].s_tio),
@@ -69,31 +69,28 @@ static void verify_ioctl(unsigned int i)
static void setup(void)
{
- if (!device)
- tst_brk(TBROK, "You must specify a tty device with -D option");
+ if (openpty(&amaster, &aslave, NULL, &termios, NULL) < 0) {
+ tst_brk(TBROK | TERRNO, "unable to open pty");
+ }
- fd = SAFE_OPEN(device, O_RDWR, 0777);
+ fd = amaster;
fd_file = SAFE_OPEN("x", O_CREAT, 0777);
}
static void cleanup(void)
{
- if (fd > 0)
- SAFE_CLOSE(fd);
-
+ if (amaster > 0)
+ SAFE_CLOSE(amaster);
+ if (aslave > 0)
+ SAFE_CLOSE(aslave);
if (fd_file > 0)
SAFE_CLOSE(fd_file);
}
static struct tst_test test = {
- .needs_root = 1,
.needs_tmpdir = 1,
.setup = setup,
.cleanup = cleanup,
.test = verify_ioctl,
- .tcnt = ARRAY_SIZE(tcases),
- .options = (struct tst_option[]) {
- {"D:", &device, "Tty device. For example, /dev/tty[0-9]"},
- {}
- }
+ .tcnt = ARRAY_SIZE(tcases)
};
diff --git a/testcases/kernel/syscalls/ioctl/test_ioctl b/testcases/kernel/syscalls/ioctl/test_ioctl
index 923275433..43836a229 100755
--- a/testcases/kernel/syscalls/ioctl/test_ioctl
+++ b/testcases/kernel/syscalls/ioctl/test_ioctl
@@ -34,29 +34,6 @@ has_tty()
return 1
}
-for tttype in `ls /dev/tty*`
-do
-device_no=${tttype#/dev/tty}
-case "$device_no" in
-[0-9]|[0-9][0-9])
- has_tty $tttype
- if [ $? -eq 0 ]; then
- tst_resm TINFO "Skipping ioctl01 with $tttype"
- continue
- fi
- tst_resm TINFO "Testing ioctl01 with $tttype"
- ioctl01 -D $tttype
- RC=$?
- if [ $RC -eq 0 ]
- then
- tst_resm TPASS "ioctl01 Passed with $tttype"
- else
- tst_resm TFAIL "ioctl01 Failed with $tttype"
- fi
-echo;;
-esac
-done
-
for tttype in `ls /dev/tty*`
do
device_no=${tttype#/dev/tty}
--
2.42.0
More information about the ltp
mailing list