Re: [PATCH 1/9] anon_inode: use a proper mode internally

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2025/4/7 17:54:15, Christian Brauner wrote:
This allows the VFS to not trip over anonymous inodes and we can add
asserts based on the mode into the vfs. When we report it to userspace
we can simply hide the mode to avoid regressions. I've audited all
direct callers of alloc_anon_inode() and only secretmen overrides i_mode
and i_op inode operations but it already uses a regular file.

Fixes: af153bb63a336 ("vfs: catch invalid modes in may_open()")
Cc: <stable@xxxxxxxxxxxxxxx> # all LTS kernels
Reported-by: syzbot+5d8e79d323a13aa0b248@xxxxxxxxxxxxxxxxxxxxxxxxx
Closes: https://lore.kernel.org/all/67ed3fb3.050a0220.14623d.0009.GAE@xxxxxxxxxx
Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx>

Hi Christian and FSdevel list,

I'm reporting a regression introduced in the linux-next tree, which I've tracked down using `git bisect` to this commit.

Starting with `linux-next` tag `next-20250408` (up to the latest `next-20250417` I tested), attempting to start an SDDM Wayland session (using KDE Plasma's KWin) results in a black screen. The `kwin_wayland` and `sddm-helper-start-wayland` processes both enter a state consuming 100% CPU on a single core indefinitely, preventing the login screen from appearing. The last known good kernel is `next-20250407`.

Using `strace` on the `kwin_wayland` process revealed it's stuck in a tight loop involving `ppoll` and `ioctl`:

```
ioctl(29, FIONREAD, [0])                = 0
ppoll([{fd=10, events=POLLIN}, {fd=37, events=POLLIN}, {fd=9, events=POLLIN}, {fd=5, events=POLLIN}, {fd=29, events=POLLIN}, {fd=17, events=POLLIN}, {fd=3, events=POLLIN}], 7, NULL, NULL, 8) = 1 ([{fd=29, revents=POLLIN}])
ioctl(29, FIONREAD, [0])                = 0
ppoll([{fd=10, events=POLLIN}, {fd=37, events=POLLIN}, {fd=9, events=POLLIN}, {fd=5, events=POLLIN}, {fd=29, events=POLLIN}, {fd=17, events=POLLIN}, {fd=3, events=POLLIN}], 7, NULL, NULL, 8) = 1 ([{fd=29, revents=POLLIN}])
# ... this repeats indefinitely at high frequency
```

Initially, I suspected a DRM issue, but checking the file descriptor confirmed it's an `inotify` instance:

```
$ sudo ls -l /proc/<kwin_pid>/fd/29
lr-x------ 1 sddm sddm 64 Apr 17 14:03 /proc/<kwin_pid>/fd/29 -> anon_inode:inotify
```

Reverting this commit resolves the issue, allowing SDDM and KWin Wayland to start normally.

Could you please take a look at this? Let me know if you need any further information or testing from my side.

--
Best regards,
Xilin Wu <sophon@xxxxxxxxx>




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux