Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

vsock/test: Extend transport change null-ptr-deref test

syzkaller reported a lockdep lock order inversion warning[1] due to
commit 687aa0c5581b ("vsock: Fix transport_* TOCTOU"). This was fixed in
commit f7c877e75352 ("vsock: fix lock inversion in
vsock_assign_transport()").

Redo syzkaller's repro by piggybacking on a somewhat related test
implemented in commit 3a764d93385c ("vsock/test: Add test for null ptr
deref when transport changes").

[1]: https://lore.kernel.org/netdev/68f6cdb0.a70a0220.205af.0039.GAE@google.com/

Signed-off-by: Michal Luczaj <mhal@rbox.co>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20251123-vsock_test-linger-lockdep-warn-v1-1-4b1edf9d8cdc@rbox.co
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Michal Luczaj and committed by
Jakub Kicinski
b796632f 87ad869f

+6 -1
+6 -1
tools/testing/vsock/vsock_test.c
··· 2015 2015 exit(EXIT_FAILURE); 2016 2016 } 2017 2017 2018 + /* Although setting SO_LINGER does not affect the original test 2019 + * for null-ptr-deref, it may trigger a lockdep warning. 2020 + */ 2021 + enable_so_linger(s, 1); 2022 + 2018 2023 ret = connect(s, (struct sockaddr *)&sa, sizeof(sa)); 2019 2024 /* The connect can fail due to signals coming from the thread, 2020 2025 * or because the receiver connection queue is full. ··· 2357 2352 .run_server = test_stream_nolinger_server, 2358 2353 }, 2359 2354 { 2360 - .name = "SOCK_STREAM transport change null-ptr-deref", 2355 + .name = "SOCK_STREAM transport change null-ptr-deref, lockdep warn", 2361 2356 .run_client = test_stream_transport_change_client, 2362 2357 .run_server = test_stream_transport_change_server, 2363 2358 },