Re: [PATCH 3/3] fsnotify: disable pre-content and permission events by default

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon 03-02-25 23:32:05, Amir Goldstein wrote:
> After introducing pre-content events, we had a regression related to
> disabling huge faults on files that should never have pre-content events
> enabled.
> 
> This happened because the default f_mode of allocated files (0) does
> not disable pre-content events.
> 
> Pre-content events are disabled in file_set_fsnotify_mode_by_watchers()
> but internal files may not get to call this helper.
> 
> Initialize f_mode to disable permission and pre-content events for all
> files and if needed they will be enabled for the callers of
> file_set_fsnotify_mode_by_watchers().
> 
> Fixes: 20bf82a898b6 ("mm: don't allow huge faults for files with pre content watches")
> Reported-by: Alex Williamson <alex.williamson@xxxxxxxxxx>
> Closes: https://lore.kernel.org/linux-fsdevel/20250131121703.1e4d00a7.alex.williamson@xxxxxxxxxx/
> Tested-by: Alex Williamson <alex.williamson@xxxxxxxxxx>
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

What makes me somewhat uneasy is that this relies on the fact that
file_set_fsnotify_mode_from_watchers() will override the
FMODE_NONOTIFY_PERM (but it does not override FMODE_NONOTIFY). This seems a
bit subtle and I was looking into if we could somehow simplify the fsnotify
fmode initialization. But I didn't find anything that would be really
simpler so let's keep what we have for now.

								Honza

> ---
>  fs/file_table.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/fs/file_table.c b/fs/file_table.c
> index 35b93da6c5cb1..5c00dc38558da 100644
> --- a/fs/file_table.c
> +++ b/fs/file_table.c
> @@ -194,6 +194,11 @@ static int init_file(struct file *f, int flags, const struct cred *cred)
>  	 * refcount bumps we should reinitialize the reused file first.
>  	 */
>  	file_ref_init(&f->f_ref, 1);
> +	/*
> +	 * Disable permission and pre-content events for all files by default.
> +	 * They may be enabled later by file_set_fsnotify_mode_from_watchers().
> +	 */
> +	file_set_fsnotify_mode(f, FMODE_NONOTIFY_PERM);
>  	return 0;
>  }
>  
> -- 
> 2.34.1
> 
-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux