forked from Minki/linux
fsnotify: Protect fsnotify_handle_inode_event from no-inode events
FAN_FS_ERROR allows events without inodes - i.e. for file system-wide errors. Even though fsnotify_handle_inode_event is not currently used by fanotify, this patch protects other backends from cases where neither inode or dir are provided. Also document the constraints of the interface (inode and dir cannot be both NULL). Link: https://lore.kernel.org/r/20211025192746.66445-12-krisman@collabora.com Suggested-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
29335033c5
commit
24dca90590
@ -602,6 +602,9 @@ nfsd_file_fsnotify_handle_event(struct fsnotify_mark *mark, u32 mask,
|
||||
struct inode *inode, struct inode *dir,
|
||||
const struct qstr *name, u32 cookie)
|
||||
{
|
||||
if (WARN_ON_ONCE(!inode))
|
||||
return 0;
|
||||
|
||||
trace_nfsd_file_fsnotify_handle_event(inode, mask);
|
||||
|
||||
/* Should be no marks on non-regular files */
|
||||
|
@ -252,6 +252,9 @@ static int fsnotify_handle_inode_event(struct fsnotify_group *group,
|
||||
if (WARN_ON_ONCE(!ops->handle_inode_event))
|
||||
return 0;
|
||||
|
||||
if (WARN_ON_ONCE(!inode && !dir))
|
||||
return 0;
|
||||
|
||||
if ((inode_mark->mask & FS_EXCL_UNLINK) &&
|
||||
path && d_unlinked(path->dentry))
|
||||
return 0;
|
||||
|
@ -136,6 +136,7 @@ struct mem_cgroup;
|
||||
* @dir: optional directory associated with event -
|
||||
* if @file_name is not NULL, this is the directory that
|
||||
* @file_name is relative to.
|
||||
* Either @inode or @dir must be non-NULL.
|
||||
* @file_name: optional file name associated with event
|
||||
* @cookie: inotify rename cookie
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user