syscalls/bind03: fix ret code behavior for v4.4 backport

Message ID 20181107133840.20042-1-rafael.tinoco@linaro.org
State New
Headers show
Series
  • syscalls/bind03: fix ret code behavior for v4.4 backport
Related show

Commit Message

Rafael David Tinoco Nov. 7, 2018, 1:38 p.m.
Recently added test bind03 has a corner case for bind(2). Because
mainline patch 0fb44559ffd6 ("af_unix: move unix_mknod() out of
bindlock") got backported to kernel v4.4 as commit 0492a033fb71, the
corner case must be adapted to correct running kernel version.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
Cc: Petr Vorel <pvorel@suse.cz>
Link: https://bugs.linaro.org/show_bug.cgi?id=4042
Signed-off-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
---
 testcases/kernel/syscalls/bind/bind03.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Petr Vorel Nov. 20, 2018, 3:20 p.m. | #1
Hi Rafael,

> Recently added test bind03 has a corner case for bind(2). Because
> mainline patch 0fb44559ffd6 ("af_unix: move unix_mknod() out of
> bindlock") got backported to kernel v4.4 as commit 0492a033fb71, the
> corner case must be adapted to correct running kernel version.

...
>  	/*
> -	 * The behavious diverse according to kernel version
> -	 * for v4.10 or later, the expected error is EADDRINUSE,
> +	 * The behavior diverse according to kernel version
> +	 * for v4.4.47~3 or later, the expected error is EADDRINUSE,
>  	 * otherwise EINVAL.
>  	 */
> -	if (tst_kvercmp(4, 10, 0) < 0) {
> +	if (tst_kvercmp(4, 4, 48) < 0) {
>  		if (errno != EINVAL) {
>  			tst_res(TFAIL | TERRNO, "expected EINVAL");
>  			return;

I think this is a wrong approach as there are versions between v4.4 and 4.10
without this patch. IMHO we should accept both EINVAL and EADDRINUSE or accept
Junchi's solution [1].


Kind regards,
Petr

[1] https://patchwork.ozlabs.org/patch/968371/
Rafael David Tinoco Nov. 20, 2018, 3:44 p.m. | #2
On 11/20/18 1:20 PM, Petr Vorel wrote:
> Hi Rafael,
> 
>> Recently added test bind03 has a corner case for bind(2). Because
>> mainline patch 0fb44559ffd6 ("af_unix: move unix_mknod() out of
>> bindlock") got backported to kernel v4.4 as commit 0492a033fb71, the
>> corner case must be adapted to correct running kernel version.
> 
> ...
>>   	/*
>> -	 * The behavious diverse according to kernel version
>> -	 * for v4.10 or later, the expected error is EADDRINUSE,
>> +	 * The behavior diverse according to kernel version
>> +	 * for v4.4.47~3 or later, the expected error is EADDRINUSE,
>>   	 * otherwise EINVAL.
>>   	 */
>> -	if (tst_kvercmp(4, 10, 0) < 0) {
>> +	if (tst_kvercmp(4, 4, 48) < 0) {
>>   		if (errno != EINVAL) {
>>   			tst_res(TFAIL | TERRNO, "expected EINVAL");
>>   			return;
> 
> I think this is a wrong approach as there are versions between v4.4 and 4.10
> without this patch. IMHO we should accept both EINVAL and EADDRINUSE or accept
> Junchi's solution [1].

Sure, makes sense! +1.

Patch

diff --git a/testcases/kernel/syscalls/bind/bind03.c b/testcases/kernel/syscalls/bind/bind03.c
index 955a69dd2..f35e4786f 100644
--- a/testcases/kernel/syscalls/bind/bind03.c
+++ b/testcases/kernel/syscalls/bind/bind03.c
@@ -46,11 +46,11 @@  void run(void)
 	}
 
 	/*
-	 * The behavious diverse according to kernel version
-	 * for v4.10 or later, the expected error is EADDRINUSE,
+	 * The behavior diverse according to kernel version
+	 * for v4.4.47~3 or later, the expected error is EADDRINUSE,
 	 * otherwise EINVAL.
 	 */
-	if (tst_kvercmp(4, 10, 0) < 0) {
+	if (tst_kvercmp(4, 4, 48) < 0) {
 		if (errno != EINVAL) {
 			tst_res(TFAIL | TERRNO, "expected EINVAL");
 			return;