diff mbox series

[v2] containers/utsname04: don't use TST_EXP_EQ_LI for tst_clone

Message ID 1678169395-4584-1-git-send-email-xuyang2018.jy@fujitsu.com
State Accepted
Headers show
Series [v2] containers/utsname04: don't use TST_EXP_EQ_LI for tst_clone | expand

Commit Message

Yang Xu \(Fujitsu\) March 7, 2023, 6:09 a.m. UTC
For old kernel(below 5.3) that doesn't support clone3, tst_clone returns
-2 instead of -1. So we can't use TST_EXP_EQ_LI api.

Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
 testcases/kernel/containers/utsname/utsname04.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Richard Palethorpe March 7, 2023, 8:35 a.m. UTC | #1
Hello,

Yang Xu <xuyang2018.jy@fujitsu.com> writes:

> For old kernel(below 5.3) that doesn't support clone3, tst_clone returns
> -2 instead of -1. So we can't use TST_EXP_EQ_LI api.
>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>

Reviewed-by: Richard Palethorpe <rpalethorpe@suse.com>

Thanks, I suppose this could be avoided in the future by hinting that
the return type is more complex than the usual for clone

typedef tst_clone_return_t pid_t;

enum tst_clone_error {
  TST_CLONE_ERROR = -2,
  TST_CLONE3_ERROR = -1
};

Possibly we could force a cast somehow? Otherwise it's just a hint.

> ---
>  testcases/kernel/containers/utsname/utsname04.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/containers/utsname/utsname04.c b/testcases/kernel/containers/utsname/utsname04.c
> index e8d636d0d..61cc066d8 100644
> --- a/testcases/kernel/containers/utsname/utsname04.c
> +++ b/testcases/kernel/containers/utsname/utsname04.c
> @@ -29,7 +29,13 @@ static void run(void)
>  	SAFE_SETRESUID(pw->pw_uid, pw->pw_uid, pw->pw_uid);
>  
>  	if (!str_op || !strcmp(str_op, "clone")) {
> -		TST_EXP_EQ_LI(tst_clone(&cargs), -1);
> +		TEST(tst_clone(&cargs));
> +		if (TST_RET == -1)
> +			tst_res(TPASS, "clone3() fails as expected");
> +		else if (TST_RET == -2)
> +			tst_res(TPASS, "clone() fails as expected");
> +		else
> +			tst_res(TFAIL, "tst_clone returns %ld", TST_RET);
>  		TST_EXP_PASS(errno == EPERM);
>  	} else {
>  		if (!SAFE_FORK()) {
> -- 
> 2.39.1
Richard Palethorpe March 7, 2023, 10:16 a.m. UTC | #2
Hello,

Merged, thanks!

Richard Palethorpe <rpalethorpe@suse.de> writes:

> Hello,
>
> Yang Xu <xuyang2018.jy@fujitsu.com> writes:
>
>> For old kernel(below 5.3) that doesn't support clone3, tst_clone returns
>> -2 instead of -1. So we can't use TST_EXP_EQ_LI api.
>>
>> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>
> Reviewed-by: Richard Palethorpe <rpalethorpe@suse.com>
>
> Thanks, I suppose this could be avoided in the future by hinting that
> the return type is more complex than the usual for clone
>
> typedef tst_clone_return_t pid_t;
>
> enum tst_clone_error {
>   TST_CLONE_ERROR = -2,
>   TST_CLONE3_ERROR = -1
> };
>
> Possibly we could force a cast somehow? Otherwise it's just a hint.
>
>> ---
>>  testcases/kernel/containers/utsname/utsname04.c | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/testcases/kernel/containers/utsname/utsname04.c b/testcases/kernel/containers/utsname/utsname04.c
>> index e8d636d0d..61cc066d8 100644
>> --- a/testcases/kernel/containers/utsname/utsname04.c
>> +++ b/testcases/kernel/containers/utsname/utsname04.c
>> @@ -29,7 +29,13 @@ static void run(void)
>>  	SAFE_SETRESUID(pw->pw_uid, pw->pw_uid, pw->pw_uid);
>>  
>>  	if (!str_op || !strcmp(str_op, "clone")) {
>> -		TST_EXP_EQ_LI(tst_clone(&cargs), -1);
>> +		TEST(tst_clone(&cargs));
>> +		if (TST_RET == -1)
>> +			tst_res(TPASS, "clone3() fails as expected");
>> +		else if (TST_RET == -2)
>> +			tst_res(TPASS, "clone() fails as expected");
>> +		else
>> +			tst_res(TFAIL, "tst_clone returns %ld", TST_RET);
>>  		TST_EXP_PASS(errno == EPERM);
>>  	} else {
>>  		if (!SAFE_FORK()) {
>> -- 
>> 2.39.1
>
>
> -- 
> Thank you,
> Richard.
diff mbox series

Patch

diff --git a/testcases/kernel/containers/utsname/utsname04.c b/testcases/kernel/containers/utsname/utsname04.c
index e8d636d0d..61cc066d8 100644
--- a/testcases/kernel/containers/utsname/utsname04.c
+++ b/testcases/kernel/containers/utsname/utsname04.c
@@ -29,7 +29,13 @@  static void run(void)
 	SAFE_SETRESUID(pw->pw_uid, pw->pw_uid, pw->pw_uid);
 
 	if (!str_op || !strcmp(str_op, "clone")) {
-		TST_EXP_EQ_LI(tst_clone(&cargs), -1);
+		TEST(tst_clone(&cargs));
+		if (TST_RET == -1)
+			tst_res(TPASS, "clone3() fails as expected");
+		else if (TST_RET == -2)
+			tst_res(TPASS, "clone() fails as expected");
+		else
+			tst_res(TFAIL, "tst_clone returns %ld", TST_RET);
 		TST_EXP_PASS(errno == EPERM);
 	} else {
 		if (!SAFE_FORK()) {