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

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.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 927fa5b3
...@@ -14,12 +14,12 @@ ...@@ -14,12 +14,12 @@
FIXTURE(scm_rights) FIXTURE(scm_rights)
{ {
int fd[16]; int fd[32];
}; };
FIXTURE_VARIANT(scm_rights) FIXTURE_VARIANT(scm_rights)
{ {
char name[16]; char name[32];
int type; int type;
int flags; int flags;
bool test_listener; bool test_listener;
...@@ -172,6 +172,8 @@ static void __create_sockets(struct __test_metadata *_metadata, ...@@ -172,6 +172,8 @@ static void __create_sockets(struct __test_metadata *_metadata,
const FIXTURE_VARIANT(scm_rights) *variant, const FIXTURE_VARIANT(scm_rights) *variant,
int n) int n)
{ {
ASSERT_LE(n * 2, sizeof(self->fd) / sizeof(self->fd[0]));
if (variant->test_listener) if (variant->test_listener)
create_listeners(_metadata, self, n); create_listeners(_metadata, self, n);
else else
...@@ -283,4 +285,23 @@ TEST_F(scm_rights, cross_edge) ...@@ -283,4 +285,23 @@ TEST_F(scm_rights, cross_edge)
close_sockets(8); 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 TEST_HARNESS_MAIN
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment