Skip to content

Commit

Permalink
selftest: af_unix: Add test case for backtrack after finalising SCC.
Browse files Browse the repository at this point in the history
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: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Shigeru Yoshida <syoshida@redhat.com>
Link: https://patch.msgid.link/20240702160428.10153-2-syoshida@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
q2ven authored and kuba-moo committed Jul 4, 2024
1 parent 927fa5b commit 2a79651
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions tools/testing/selftests/net/af_unix/scm_rights.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

0 comments on commit 2a79651

Please sign in to comment.