Re: Test failure from "file: convert to SLAB_TYPESAFE_BY_RCU"

From: Sven Schnelle
Date: Fri Oct 06 2023 - 05:20:16 EST


Mark Brown <broonie@xxxxxxxxxx> writes:

> For the past few days (I was away last week...) the fd-003-kthread.c
> test from the proc kselftests has been failing on arm64, this is an
> nfsroot system if that makes any odds. The test output itself is:
>
> # selftests: proc: fd-003-kthread
> # fd-003-kthread: fd-003-kthread.c:113: test_readdir: Assertion `!de' failed.
> # Aborted
> not ok 3 selftests: proc: fd-003-kthread # exit=134
>
> I ran a bisect which pointed at the commit
>
> d089d9d056c048303aedd40a7f3f26593ebd040c file: convert to SLAB_TYPESAFE_BY_RCU
>
> (I can't seem to find that on lore.) I've not done any further analysis
> of what the commit is doing or anything, though it does look like the
> bisect ran fairly smoothly and it looks at least plausibly related to
> the issue and reverting the commit on top of -next causes the test to
> start passing again.

I'm seeing the same with the strace test-suite on s390. The problem is
that /proc/*/fd now contains the file descriptors of the calling
process, and not the target process.

Old kernel:

# ls -l /proc/1/fd

total 0
lrwx------. 1 root root 64 Oct 6 11:11 0 -> /dev/null
lrwx------. 1 root root 64 Oct 6 11:11 1 -> /dev/null
lr-x------. 1 root root 64 Oct 6 11:12 10 -> /proc/1/mountinfo
lr-x------. 1 root root 64 Oct 6 11:12 11 -> anon_inode:inotify
lr-x------. 1 root root 64 Oct 6 11:12 13 -> anon_inode:inotify
lr-x------. 1 root root 64 Oct 6 11:12 14 -> /proc/swaps
lrwx------. 1 root root 64 Oct 6 11:12 15 -> 'socket:[5419]'
lrwx------. 1 root root 64 Oct 6 11:12 16 -> 'socket:[5420]'
[..]

# ls -l /proc/2/fd
total 0
#

New kernel:

# ls -l /proc/1/fd
total 0
lrwx------. 1 root root 64 Oct 6 11:14 0 -> /dev/null
lrwx------. 1 root root 64 Oct 6 11:14 1 -> /dev/null
lrwx------. 1 root root 64 Oct 6 11:14 2 -> /dev/null
lr-x------. 1 root root 64 Oct 6 11:14 3 -> /dev/kmsg

# ls -l /proc/2/fd
ls: cannot read symbolic link '/proc/2/fd/0': No such file or directory
ls: cannot read symbolic link '/proc/2/fd/1': No such file or directory
ls: cannot read symbolic link '/proc/2/fd/2': No such file or directory
ls: cannot read symbolic link '/proc/2/fd/3': No such file or directory
total 0
lrwx------. 1 root root 64 Oct 6 11:14 0
lrwx------. 1 root root 64 Oct 6 11:14 1
lrwx------. 1 root root 64 Oct 6 11:14 2
lr-x------. 1 root root 64 Oct 6 11:14 3