]> www.infradead.org Git - users/willy/linux.git/commit
selftests: add file SLAB_TYPESAFE_BY_RCU recycling stressor
authorChristian Brauner <brauner@kernel.org>
Mon, 21 Oct 2024 11:54:46 +0000 (13:54 +0200)
committerChristian Brauner <brauner@kernel.org>
Wed, 30 Oct 2024 08:58:02 +0000 (09:58 +0100)
commitaab154a442f9ba2a08fc130dbc8d178a33e10345
tree391d7f413919f98ce716690d5556afb0c024ee5d
parent2ec67bb4f9c08000982d6aa0e72511bcc83caeb6
selftests: add file SLAB_TYPESAFE_BY_RCU recycling stressor

Add a simple file stressor that lives directly in-tree. This will create
a bunch of processes that each open 500 file descriptors and then use
close_range() to close them all.

Concurrently, other processes read /proc/<pid>/fd/ which rougly does

    f = fget_task_next(p, &fd);
    if (!f)
           break;
    data.mode = f->f_mode;
    fput(f);

Which means that it'll try to get a reference to a file in another
task's file descriptor table.

Under heavy file load it is increasingly likely that the other task will
manage to close @file and @file will be recycled due to
SLAB_TYPEAFE_BY_RCU concurrently. This will trigger various warnings in
the file reference counting code.

Link: https://lore.kernel.org/r/20241021-vergab-streuen-924df15dceb9@brauner
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/filesystems/.gitignore
tools/testing/selftests/filesystems/Makefile
tools/testing/selftests/filesystems/file_stressor.c [new file with mode: 0644]