Commit 2a79651b authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by Jakub Kicinski
Browse files

selftest: af_unix: Add test case for backtrack after finalising SCC.



syzkaller reported a KMSAN splat in __unix_walk_scc() while backtracking
edge_stack after finalising SCC.

Let's add a test case exercising the path.

Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarShigeru Yoshida <syoshida@redhat.com>
Link: https://patch.msgid.link/20240702160428.10153-2-syoshida@redhat.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 927fa5b3
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -14,12 +14,12 @@

FIXTURE(scm_rights)
{
	int fd[16];
	int fd[32];
};

FIXTURE_VARIANT(scm_rights)
{
	char name[16];
	char name[32];
	int type;
	int flags;
	bool test_listener;
@@ -172,6 +172,8 @@ static void __create_sockets(struct __test_metadata *_metadata,
			     const FIXTURE_VARIANT(scm_rights) *variant,
			     int n)
{
	ASSERT_LE(n * 2, sizeof(self->fd) / sizeof(self->fd[0]));

	if (variant->test_listener)
		create_listeners(_metadata, self, n);
	else
@@ -283,4 +285,23 @@ TEST_F(scm_rights, cross_edge)
	close_sockets(8);
}

TEST_F(scm_rights, backtrack_from_scc)
{
	create_sockets(10);

	send_fd(0, 1);
	send_fd(0, 4);
	send_fd(1, 2);
	send_fd(2, 3);
	send_fd(3, 1);

	send_fd(5, 6);
	send_fd(5, 9);
	send_fd(6, 7);
	send_fd(7, 8);
	send_fd(8, 6);

	close_sockets(10);
}

TEST_HARNESS_MAIN