[LTP] [PATCH] syscall: set FORK in tst_sig for some old tests
Li Wang <[email protected]>
| Newsgroups | it.linux.lists.ltp |
|---|---|
| Message-ID | <[email protected]> |
From: Li Wang <[email protected]> Since commit d90d2004657b ("lib: Use backoff polling to wait for loop device nodes") use TST_RETRY_FN_EXP_BACKOFF(), which calls tst_multiply_timeout(). That in turn reaches tst_has_slow_kconfig() -> tst_kconfig_read() -> popen("zcat /proc/config.gz") to read the kernel config. popen() forks a child, and that child exits the SIGCHLD is reported as an unexpected signal by the tst_sig(NOFORK) handler: umount2_01 1 TBROK : tst_sig.c:232: unexpected signal SIGCHLD(17) received Since these tests now genuinely fork (indirectly via popen), declaring FORK matches their actual behavior and lets the handler tolerate the child's SIGCHLD. This is a minimal fix that preserves the retry logic. These are old-API tests that will eventually be converted to the new tst_test API and this issue disappears entirely. The one-line FORK change is a low-cost bridge until then. Fixes: d90d2004657b ("lib: Use backoff polling to wait for loop device nodes") Signed-off-by: Li Wang <[email protected]> --- Notes: This is a temporary solution for the regression, I will convert these old tests to the new API next few days. testcases/kernel/syscalls/linkat/linkat02.c | 2 +- testcases/kernel/syscalls/mknodat/mknodat02.c | 2 +- testcases/kernel/syscalls/rename/rename11.c | 2 +- testcases/kernel/syscalls/renameat/renameat01.c | 2 +- testcases/kernel/syscalls/umount2/umount2_01.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/testcases/kernel/syscalls/linkat/linkat02.c b/testcases/kernel/syscalls/linkat/linkat02.c index 273587271..6dfa7cfb5 100644 --- a/testcases/kernel/syscalls/linkat/linkat02.c +++ b/testcases/kernel/syscalls/linkat/linkat02.c @@ -140,7 +140,7 @@ static void setup(void) { tst_require_root(); - tst_sig(NOFORK, DEF_HANDLER, cleanup); + tst_sig(FORK, DEF_HANDLER, cleanup); tst_tmpdir(); diff --git a/testcases/kernel/syscalls/mknodat/mknodat02.c b/testcases/kernel/syscalls/mknodat/mknodat02.c index 2f7c56f00..89cfc5978 100644 --- a/testcases/kernel/syscalls/mknodat/mknodat02.c +++ b/testcases/kernel/syscalls/mknodat/mknodat02.c @@ -107,7 +107,7 @@ static void setup(void) tst_require_root(); - tst_sig(NOFORK, DEF_HANDLER, cleanup); + tst_sig(FORK, DEF_HANDLER, cleanup); tst_tmpdir(); diff --git a/testcases/kernel/syscalls/rename/rename11.c b/testcases/kernel/syscalls/rename/rename11.c index 8ff9f7d38..26e324d64 100644 --- a/testcases/kernel/syscalls/rename/rename11.c +++ b/testcases/kernel/syscalls/rename/rename11.c @@ -90,7 +90,7 @@ static void setup(void) { int i; - tst_sig(NOFORK, DEF_HANDLER, cleanup); + tst_sig(FORK, DEF_HANDLER, cleanup); tst_require_root(); diff --git a/testcases/kernel/syscalls/renameat/renameat01.c b/testcases/kernel/syscalls/renameat/renameat01.c index 72e72b481..f9ed3a9a7 100644 --- a/testcases/kernel/syscalls/renameat/renameat01.c +++ b/testcases/kernel/syscalls/renameat/renameat01.c @@ -134,7 +134,7 @@ static void setup(void) tst_require_root(); - tst_sig(NOFORK, DEF_HANDLER, cleanup); + tst_sig(FORK, DEF_HANDLER, cleanup); tst_tmpdir(); diff --git a/testcases/kernel/syscalls/umount2/umount2_01.c b/testcases/kernel/syscalls/umount2/umount2_01.c index 274409ef3..c6496e306 100644 --- a/testcases/kernel/syscalls/umount2/umount2_01.c +++ b/testcases/kernel/syscalls/umount2/umount2_01.c @@ -67,7 +67,7 @@ static void setup(void) { tst_require_root(); - tst_sig(NOFORK, DEF_HANDLER, NULL); + tst_sig(FORK, DEF_HANDLER, NULL); tst_tmpdir(); -- 2.55.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp