Commit b796632f authored by Michal Luczaj's avatar Michal Luczaj Committed by Jakub Kicinski
Browse files

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

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

Redo syzkaller's repro by piggybacking on a somewhat related test
implemented in commit 3a764d93 ("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: default avatarMichal Luczaj <mhal@rbox.co>
Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20251123-vsock_test-linger-lockdep-warn-v1-1-4b1edf9d8cdc@rbox.co


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 87ad869f
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -2015,6 +2015,11 @@ static void test_stream_transport_change_client(const struct test_opts *opts)
			exit(EXIT_FAILURE);
		}

		/* Although setting SO_LINGER does not affect the original test
		 * for null-ptr-deref, it may trigger a lockdep warning.
		 */
		enable_so_linger(s, 1);

		ret = connect(s, (struct sockaddr *)&sa, sizeof(sa));
		/* The connect can fail due to signals coming from the thread,
		 * or because the receiver connection queue is full.
@@ -2352,7 +2357,7 @@ static struct test_case test_cases[] = {
		.run_server = test_stream_nolinger_server,
	},
	{
		.name = "SOCK_STREAM transport change null-ptr-deref",
		.name = "SOCK_STREAM transport change null-ptr-deref, lockdep warn",
		.run_client = test_stream_transport_change_client,
		.run_server = test_stream_transport_change_server,
	},