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.2301070...
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) {
perror("Connect failed"); kill(0, SIGTERM); exit(1);sizeof(*consumer_addr)) != 0) {
-- 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