ACK: [Bionic][SRU][PATCH 1/1] fsnotify: fix ignore mask logic in fsnotify()

Khaled Elmously khalid.elmously at canonical.com
Mon Nov 26 02:30:33 UTC 2018


On 2018-11-22 19:31:33 , Po-Hsu Lin wrote:
> From: Amir Goldstein <amir73il at gmail.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1802454
> 
> Commit 92183a42898d ("fsnotify: fix ignore mask logic in
> send_to_group()") acknoledges the use case of ignoring an event on
> an inode mark, because of an ignore mask on a mount mark of the same
> group (i.e. I want to get all events on this file, except for the events
> that came from that mount).
> 
> This change depends on correctly merging the inode marks and mount marks
> group lists, so that the mount mark ignore mask would be tested in
> send_to_group(). Alas, the merging of the lists did not take into
> account the case where event in question is not in the mask of any of
> the mount marks.
> 
> To fix this, completely remove the tests for inode and mount event masks
> from the lists merging code.
> 
> Fixes: 92183a42898d ("fsnotify: fix ignore mask logic in send_to_group")
> Signed-off-by: Amir Goldstein <amir73il at gmail.com>
> Signed-off-by: Jan Kara <jack at suse.cz>
> (backported from commit 9bdda4e9cf2dcecb60a0683b10ffb8cd7e5f2f45)
> Signed-off-by: Po-Hsu Lin <po-hsu.lin at canonical.com>
> ---
>  fs/notify/fsnotify.c | 13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c
> index 613ec7e..6a862aa 100644
> --- a/fs/notify/fsnotify.c
> +++ b/fs/notify/fsnotify.c
> @@ -305,16 +305,9 @@ int fsnotify(struct inode *to_tell, __u32 mask, const void *data, int data_is,
>  
>  	iter_info.srcu_idx = srcu_read_lock(&fsnotify_mark_srcu);
>  
> -	if ((mask & FS_MODIFY) ||
> -	    (test_mask & to_tell->i_fsnotify_mask)) {
> -		iter_info.inode_mark =
> -			fsnotify_first_mark(&to_tell->i_fsnotify_marks);
> -	}
> -
> -	if (mnt && ((mask & FS_MODIFY) ||
> -		    (test_mask & mnt->mnt_fsnotify_mask))) {
> -		iter_info.inode_mark =
> -			fsnotify_first_mark(&to_tell->i_fsnotify_marks);
> +	iter_info.inode_mark =
> +		fsnotify_first_mark(&to_tell->i_fsnotify_marks);
> +	if (mnt) {
>  		iter_info.vfsmount_mark =
>  			fsnotify_first_mark(&mnt->mnt_fsnotify_marks);
>  	}

Acked-by: Khalid Elmously <khalid.elmously at canonical.com>




More information about the kernel-team mailing list