fs: require inode_owner_or_capable for F_SET_RW_HINT

F_SET_RW_HINT controls data placement in the file system and / or
device and should not be available to everyone who can read a given file.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20241122122931.90408-2-hch@lst.de
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Christoph Hellwig 2024-11-22 13:29:24 +01:00 committed by Christian Brauner
parent 088f294609
commit b651251949
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2

View File

@ -374,6 +374,9 @@ static long fcntl_set_rw_hint(struct file *file, unsigned int cmd,
u64 __user *argp = (u64 __user *)arg;
u64 hint;
if (!inode_owner_or_capable(file_mnt_idmap(file), inode))
return -EPERM;
if (copy_from_user(&hint, argp, sizeof(hint)))
return -EFAULT;
if (!rw_hint_valid(hint))