linux/fs/notify
Amir Goldstein ffe1766a3a fanotify: allow reporting errors on failure to open fd
[ Upstream commit 522249f05c ]

When working in "fd mode", fanotify_read() needs to open an fd
from a dentry to report event->fd to userspace.

Opening an fd from dentry can fail for several reasons.
For example, when tasks are gone and we try to open their
/proc files or we try to open a WRONLY file like in sysfs
or when trying to open a file that was deleted on the
remote network server.

Add a new flag FAN_REPORT_FD_ERROR for fanotify_init().
For a group with FAN_REPORT_FD_ERROR, we will send the
event with the error instead of the open fd, otherwise
userspace may not get the error at all.

For an overflow event, we report -EBADF to avoid confusing FAN_NOFD
with -EPERM.  Similarly for pidfd open errors we report either -ESRCH
or the open error instead of FAN_NOPIDFD and FAN_EPIDFD.

In any case, userspace will not know which file failed to
open, so add a debug print for further investigation.

Reported-by: Krishna Vivek Vitta <kvitta@microsoft.com>
Link: https://lore.kernel.org/linux-fsdevel/SI2P153MB07182F3424619EDDD1F393EED46D2@SI2P153MB0718.APCP153.PROD.OUTLOOK.COM/
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20241003142922.111539-1-amir73il@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-12-14 20:00:05 +01:00
..
dnotify dnotify: Pass argument of fcntl_dirnotify as int 2023-07-10 14:36:12 +02:00
fanotify fanotify: allow reporting errors on failure to open fd 2024-12-14 20:00:05 +01:00
inotify inotify: Avoid reporting event with invalid wd 2023-04-25 12:36:55 +02:00
fdinfo.c exportfs: add explicit flag to request non-decodeable file handles 2023-05-22 18:08:37 +02:00
fdinfo.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fsnotify.c fsnotify: fix sending inotify event with unexpected filename 2024-12-09 10:32:44 +01:00
fsnotify.h fsnotify: clear PARENT_WATCHED flags lazily 2024-09-08 07:54:44 +02:00
group.c fsnotify: create helpers for group mark_mutex lock 2022-04-25 14:37:22 +02:00
Kconfig fs/notify: Remove "select SRCU" 2023-02-02 16:26:06 -08:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mark.c fsnotify: clear PARENT_WATCHED flags lazily 2024-09-08 07:54:44 +02:00
notification.c fsnotify: Pass group argument to free_event 2021-10-27 12:34:18 +02:00