Re: [LTP] [PATCH] syscalls/clone08: Skip test_clone_stopped after kernel 2.6.25

Jan Stancek
2014-04-29T09:25:20Z

----- Original Message -----
> From: "shuang qiu" <shuang.qiu@oracle.com>
> To: ltp-list@lists.sourceforge.net
> Sent: Tuesday, 29 April, 2014 10:44:26 AM
> Subject: [LTP] [PATCH] syscalls/clone08: Skip test_clone_stopped after kernel 2.6.25
>
> From: Shuang Qiu <shuang.qiu@oracle.com>
>
> According to CLONE manual page "From Linux 2.6.25 this flag is
> deprecated.You probably never wanted to use it, you certainly shouldn’t
> be using it, and soon it will go away",skip test_clone_stopped
> after kernel 2.6.25.

Hi,

"This flag was deprecated from Linux 2.6.25 onward, and was removed altogether in Linux 2.6.38."

As I understand, marking it as deprecated didn't prevent anyone from using it.
So, shouldn't the test still be valid up to 2.6.38, when it was finally removed?

>
> Signed-off-by: Shuang Qiu <shuang.qiu@oracle.com>
> ---
> testcases/kernel/syscalls/clone/clone08.c | 9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/clone/clone08.c
> b/testcases/kernel/syscalls/clone/clone08.c
> index 14ebf60..610986d 100644
> --- a/testcases/kernel/syscalls/clone/clone08.c
> +++ b/testcases/kernel/syscalls/clone/clone08.c
> @@ -84,15 +84,24 @@ int main(int ac, char **av)
> {
> char *msg;
> int i, lc;
> + int clone_stopped = 0;
>
> msg = parse_opts(ac, av, NULL, NULL);
> if (msg != NULL)
> tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
>
> setup();
> +
> +#ifdef CLONE_STOPPED
> + if (tst_kvercmp(2, 6, 25) > 0)
> + clone_stopped =1;
> +#endif
> +
> for (lc = 0; TEST_LOOPING(lc); lc++) {
> tst_count = 0;
> for (i = 0; i < TST_TOTAL; i++) {
> + if (clone_stopped == 1 && i ==3)
> + continue;

I'd suggest to put the check directly to test_clone_stopped()
and you can avoid using checks that depend on order of testcases:

diff --git a/testcases/kernel/syscalls/clone/clone08.c b/testcases/kernel/syscalls/clone/clone08.c
index 14ebf60..9518382 100644
--- a/testcases/kernel/syscalls/clone/clone08.c
+++ b/testcases/kernel/syscalls/clone/clone08.c
@@ -238,6 +238,11 @@ static void test_clone_stopped(int t)
int flag;
pid_t child;

+ if (tst_kvercmp(2, 6, 38) >= 0) {
+ tst_resm(TINFO, "CLONE_STOPPED skipped for kernels >= 2.6.38");
+ return;
+ }
+
stopped_flag = 0;
child = clone_child(&test_cases[t], 1);

Regards,
Jan

> tst_resm(TINFO, "running %s", test_cases[i].name);
> test_cases[i].testfunc(i);
> }
> --
> 1.7.7
>
>
> ------------------------------------------------------------------------------
> "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
> Instantly run your Selenium tests across 300+ browser/OS combos. Get
> unparalleled scalability from the best Selenium testing platform available.
> Simple to use. Nothing to install. Get started now for free."
> http://p.sf.net/sfu/SauceLabs
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list