Commit 0e97fd29 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'fsnotify_for_v6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull fanotify fix from Jan Kara:
 "Disable superblock / mount marks for filesystems that can encode file
  handles but not open them (currently only overlayfs).

  It is not clear the functionality is useful in any way so let's better
  disable it before someone comes up with some creative misuse"

* tag 'fsnotify_for_v6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  fanotify: limit reporting of event with non-decodeable file handles
parents f20f29cb 97ac4897
......@@ -1585,16 +1585,25 @@ static int fanotify_test_fsid(struct dentry *dentry, __kernel_fsid_t *fsid)
}
/* Check if filesystem can encode a unique fid */
static int fanotify_test_fid(struct dentry *dentry)
static int fanotify_test_fid(struct dentry *dentry, unsigned int flags)
{
unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS;
const struct export_operations *nop = dentry->d_sb->s_export_op;
/*
* We need to make sure that the filesystem supports encoding of
* file handles so user can use name_to_handle_at() to compare fids
* reported with events to the file handle of watched objects.
*/
if (!nop)
return -EOPNOTSUPP;
/*
* We need to make sure that the file system supports at least
* encoding a file handle so user can use name_to_handle_at() to
* compare fid returned with event to the file handle of watched
* objects. However, even the relaxed AT_HANDLE_FID flag requires
* at least empty export_operations for ecoding unique file ids.
* For sb/mount mark, we also need to make sure that the filesystem
* supports decoding file handles, so user has a way to map back the
* reported fids to filesystem objects.
*/
if (!dentry->d_sb->s_export_op)
if (mark_type != FAN_MARK_INODE && !nop->fh_to_dentry)
return -EOPNOTSUPP;
return 0;
......@@ -1812,7 +1821,7 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
if (ret)
goto path_put_and_out;
ret = fanotify_test_fid(path.dentry);
ret = fanotify_test_fid(path.dentry, flags);
if (ret)
goto path_put_and_out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment