diff mbox series

[1/2] lib/tst_test: setup TCID earlier in do_setup()

Message ID 20210624081500.11715-1-aleksei.kodanev@bell-sw.com
State Accepted
Headers show
Series [1/2] lib/tst_test: setup TCID earlier in do_setup() | expand

Commit Message

Alexey Kodanev June 24, 2021, 8:14 a.m. UTC
TCID can be NULL in tst_tmpdir() because it is set after do_setup():

    tst_run_tcases()
        do_setup()
            ...
            tid = get_tid();
            ...
            tst_tmpdir()  /* using TCID here */
        TCID = tid;

Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
---
 lib/tst_test.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Li Wang June 24, 2021, 8:37 a.m. UTC | #1
Hi Alexey,

Good catch.

On Thu, Jun 24, 2021 at 4:15 PM Alexey Kodanev <aleksei.kodanev@bell-sw.com>
wrote:

> TCID can be NULL in tst_tmpdir() because it is set after do_setup():
>
>     tst_run_tcases()
>         do_setup()
>             ...
>             tid = get_tid();
>             ...
>             tst_tmpdir()  /* using TCID here */
>         TCID = tid;
>
> Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
>

Reviewed-by: Li Wang <liwang@redhat.com>
Cyril Hrubis June 25, 2021, 9:27 a.m. UTC | #2
Hi!
> TCID can be NULL in tst_tmpdir() because it is set after do_setup():
> 
>     tst_run_tcases()
>         do_setup()
>             ...
>             tid = get_tid();
>             ...
>             tst_tmpdir()  /* using TCID here */
>         TCID = tid;

Good catch, I wonder how we missed this for so long...

Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
Alexey Kodanev June 28, 2021, 9:47 a.m. UTC | #3
Hi Li, Cyril,
On 25.06.2021 12:27, Cyril Hrubis wrote:
> Hi!
>> TCID can be NULL in tst_tmpdir() because it is set after do_setup():
>>
>>     tst_run_tcases()
>>         do_setup()
>>             ...
>>             tid = get_tid();
>>             ...
>>             tst_tmpdir()  /* using TCID here */
>>         TCID = tid;
> 
> Good catch, I wonder how we missed this for so long...

Ran into this with musl, it pastes "(null)" to the tmpdir path if
TCID is NULL, so the final template looked like "/tmp/(nuXXXXXX".
But glibc skips it because the same string doesn't fit in 3 chars
template in snprintf(..., "%s/%.3sXXXXXX",...).

Applied the patch. Thanks for review!
diff mbox series

Patch

diff --git a/lib/tst_test.c b/lib/tst_test.c
index 36a4809c7..55449c80b 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -915,7 +915,7 @@  static void do_setup(int argc, char *argv[])
 
 	assert_test_fn();
 
-	tid = get_tid(argv);
+	TCID = tid = get_tid(argv);
 
 	if (tst_test->sample)
 		tst_test = tst_timer_test_setup(tst_test);
@@ -1412,8 +1412,6 @@  void tst_run_tcases(int argc, char *argv[], struct tst_test *self)
 
 	do_setup(argc, argv);
 
-	TCID = tid;
-
 	SAFE_SIGNAL(SIGALRM, alarm_handler);
 	SAFE_SIGNAL(SIGUSR1, heartbeat_handler);