On Thu, 28 Jul 2022 at 08:39, Jiachen Zhang <zhangjiachen.jaycee@xxxxxxxxxxxxx> wrote: > > Some code paths cannot guarantee the inode have any dentry alias. So > WARN_ON() all !dentry may flood the kernel logs. > > For example, when an overlayfs inode is watched by inotifywait (1), and > someone is trying to read the /proc/$(pidof inotifywait)/fdinfo/INOTIFY_FD, > at that time if the dentry has been reclaimed by kernel (such as > echo 2 > /proc/sys/vm/drop_caches), there will be a WARN_ON(). The > printed call stack would be like: > > ? show_mark_fhandle+0xf0/0xf0 > show_mark_fhandle+0x4a/0xf0 > ? show_mark_fhandle+0xf0/0xf0 > ? seq_vprintf+0x30/0x50 > ? seq_printf+0x53/0x70 > ? show_mark_fhandle+0xf0/0xf0 > inotify_fdinfo+0x70/0x90 > show_fdinfo.isra.4+0x53/0x70 > seq_show+0x130/0x170 > seq_read+0x153/0x440 > vfs_read+0x94/0x150 > ksys_read+0x5f/0xe0 > do_syscall_64+0x59/0x1e0 > entry_SYSCALL_64_after_hwframe+0x44/0xa9 > > So let's replace WARN_ON() with WARN_ON_ONCE() to avoid kernel log > flooding. Better just drop the WARN_ON() completely in that case, since it's a normally occurring condition. Thanks, Miklos