[net,v4] af_unix: selftest: Fix the size of the parameter to connect()

Message ID alpine.DEB.2.21.2301070437400.26826@domac.alu.hr
State New
Headers
Series [net,v4] af_unix: selftest: Fix the size of the parameter to connect() |

Commit Message

Mirsad Todorovac Jan. 7, 2023, 3:40 a.m. UTC
  From: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>

Adjust size parameter in connect() to match the type of the parameter, to
fix "No such file or directory" error in selftests/net/af_unix/
test_oob_unix.c:127.

The existing code happens to work provided that the autogenerated pathname
is shorter than sizeof (struct sockaddr), which is why it hasn't been
noticed earlier.

Visible from the trace excerpt:

bind(3, {sa_family=AF_UNIX, sun_path="unix_oob_453059"}, 110) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa6a6577a10) = 453060
[pid <child>] connect(6, {sa_family=AF_UNIX, sun_path="unix_oob_45305"}, 16) = -1 ENOENT (No such file or directory)

BUG: The filename is trimmed to sizeof (struct sockaddr).

Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Cc: Florian Westphal <fw@strlen.de>
Reviewed-by: Florian Westphal <fw@strlen.de>
Fixes: 314001f0bf92 ("af_unix: Add OOB support")
Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
---

The patch is generated against the "vanilla" Torvalds mainline tree 6.2-rc2.
(Tested and applies against the net.git tree.)


 tools/testing/selftests/net/af_unix/test_unix_oob.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


--
Mirsad Goran Todorovac
Sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu

System engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia
The European Union
  

Comments

Kuniyuki Iwashima Jan. 9, 2023, 1:15 a.m. UTC | #1
From:   Mirsad Goran Todorovac <mirsad.todorovac@alu.hr>
Date:   Sat, 7 Jan 2023 04:40:20 +0100 (CET)
> From: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
> 
> Adjust size parameter in connect() to match the type of the parameter, to
> fix "No such file or directory" error in selftests/net/af_unix/
> test_oob_unix.c:127.
> 
> The existing code happens to work provided that the autogenerated pathname
> is shorter than sizeof (struct sockaddr), which is why it hasn't been
> noticed earlier.
> 
> Visible from the trace excerpt:
> 
> bind(3, {sa_family=AF_UNIX, sun_path="unix_oob_453059"}, 110) = 0
> clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa6a6577a10) = 453060
> [pid <child>] connect(6, {sa_family=AF_UNIX, sun_path="unix_oob_45305"}, 16) = -1 ENOENT (No such file or directory)
> 
> BUG: The filename is trimmed to sizeof (struct sockaddr).
> 
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: Shuah Khan <shuah@kernel.org>
> Cc: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
> Cc: Florian Westphal <fw@strlen.de>
> Reviewed-by: Florian Westphal <fw@strlen.de>
> Fixes: 314001f0bf92 ("af_unix: Add OOB support")
> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>

Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>

You can check the current status here.
https://patchwork.kernel.org/project/netdevbpf/patch/alpine.DEB.2.21.2301070437400.26826@domac.alu.hr/

PS: you may want to check config not to send a mail as multipart next time.

Thank you,
Kuniyuki


> ---
> 
> The patch is generated against the "vanilla" Torvalds mainline tree 6.2-rc2.
> (Tested and applies against the net.git tree.)
> 
> 
>  tools/testing/selftests/net/af_unix/test_unix_oob.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/net/af_unix/test_unix_oob.c b/tools/testing/selftests/net/af_unix/test_unix_oob.c
> index b57e91e1c3f2..532459a15067 100644
> --- a/tools/testing/selftests/net/af_unix/test_unix_oob.c
> +++ b/tools/testing/selftests/net/af_unix/test_unix_oob.c
> @@ -124,7 +124,7 @@ void producer(struct sockaddr_un *consumer_addr)
>  
>  	wait_for_signal(pipefd[0]);
>  	if (connect(cfd, (struct sockaddr *)consumer_addr,
> -		     sizeof(struct sockaddr)) != 0) {
> +		     sizeof(*consumer_addr)) != 0) {
>  		perror("Connect failed");
>  		kill(0, SIGTERM);
>  		exit(1);
> 
> --
> Mirsad Goran Todorovac
> Sistem inženjer
> Grafički fakultet | Akademija likovnih umjetnosti
> Sveučilište u Zagrebu
> 
> System engineer
> Faculty of Graphic Arts | Academy of Fine Arts
> University of Zagreb, Republic of Croatia
> The European Union
  
patchwork-bot+netdevbpf@kernel.org Jan. 9, 2023, 8:20 a.m. UTC | #2
Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Sat, 7 Jan 2023 04:40:20 +0100 (CET) you wrote:
> From: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
> 
> Adjust size parameter in connect() to match the type of the parameter, to
> fix "No such file or directory" error in selftests/net/af_unix/
> test_oob_unix.c:127.
> 
> The existing code happens to work provided that the autogenerated pathname
> is shorter than sizeof (struct sockaddr), which is why it hasn't been
> noticed earlier.
> 
> [...]

Here is the summary with links:
  - [net,v4] af_unix: selftest: Fix the size of the parameter to connect()
    https://git.kernel.org/netdev/net/c/7d6ceeb1875c

You are awesome, thank you!
  
Mirsad Todorovac Jan. 9, 2023, 8:53 a.m. UTC | #3
On 9.1.2023. 2:15, Kuniyuki Iwashima wrote:
> From:   Mirsad Goran Todorovac <mirsad.todorovac@alu.hr>
> Date:   Sat, 7 Jan 2023 04:40:20 +0100 (CET)
>> From: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
>>
>> Adjust size parameter in connect() to match the type of the parameter, to
>> fix "No such file or directory" error in selftests/net/af_unix/
>> test_oob_unix.c:127.
>>
>> The existing code happens to work provided that the autogenerated pathname
>> is shorter than sizeof (struct sockaddr), which is why it hasn't been
>> noticed earlier.
>>
>> Visible from the trace excerpt:
>>
>> bind(3, {sa_family=AF_UNIX, sun_path="unix_oob_453059"}, 110) = 0
>> clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fa6a6577a10) = 453060
>> [pid <child>] connect(6, {sa_family=AF_UNIX, sun_path="unix_oob_45305"}, 16) = -1 ENOENT (No such file or directory)
>>
>> BUG: The filename is trimmed to sizeof (struct sockaddr).
>>
>> Cc: "David S. Miller" <davem@davemloft.net>
>> Cc: Eric Dumazet <edumazet@google.com>
>> Cc: Jakub Kicinski <kuba@kernel.org>
>> Cc: Paolo Abeni <pabeni@redhat.com>
>> Cc: Shuah Khan <shuah@kernel.org>
>> Cc: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
>> Cc: Florian Westphal <fw@strlen.de>
>> Reviewed-by: Florian Westphal <fw@strlen.de>
>> Fixes: 314001f0bf92 ("af_unix: Add OOB support")
>> Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
> 
> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
> 
> You can check the current status here.
> https://patchwork.kernel.org/project/netdevbpf/patch/alpine.DEB.2.21.2301070437400.26826@domac.alu.hr/

Thank you very much for your time on this, Koniyuki, Jakub.

> PS: you may want to check config not to send a mail as multipart next time.

Done! Thanks for the hint. This should work:

   [ Sending Preferences ]
       [X]  Do Not Generate Sender Header
       [ ]  Use Sender Instead of X-X-Sender
       [X]  Do Not Send Flowed Text
       [X]  Downgrade Multipart to Text

Maybe add this to Documentation/process/email-clients.rst, section 
Alpine? It could save some round-trips ...

Thanks,
Mirsad
  

Patch

diff --git a/tools/testing/selftests/net/af_unix/test_unix_oob.c b/tools/testing/selftests/net/af_unix/test_unix_oob.c
index b57e91e1c3f2..532459a15067 100644
--- a/tools/testing/selftests/net/af_unix/test_unix_oob.c
+++ b/tools/testing/selftests/net/af_unix/test_unix_oob.c
@@ -124,7 +124,7 @@  void producer(struct sockaddr_un *consumer_addr)
 
 	wait_for_signal(pipefd[0]);
 	if (connect(cfd, (struct sockaddr *)consumer_addr,
-		     sizeof(struct sockaddr)) != 0) {
+		     sizeof(*consumer_addr)) != 0) {
 		perror("Connect failed");
 		kill(0, SIGTERM);
 		exit(1);