• Amir Goldstein's avatar
    fanotify: fix logic of events on child · 54a307ba
    Amir Goldstein authored
    When event on child inodes are sent to the parent inode mark and
    parent inode mark was not marked with FAN_EVENT_ON_CHILD, the event
    will not be delivered to the listener process. However, if the same
    process also has a mount mark, the event to the parent inode will be
    delivered regadless of the mount mark mask.
    
    This behavior is incorrect in the case where the mount mark mask does
    not contain the specific event type. For example, the process adds
    a mark on a directory with mask FAN_MODIFY (without FAN_EVENT_ON_CHILD)
    and a mount mark with mask FAN_CLOSE_NOWRITE (without FAN_ONDIR).
    
    A modify event on a file inside that directory (and inside that mount)
    should not create a FAN_MODIFY event, because neither of the marks
    requested to get that event on the file.
    
    Fixes: 1968f5ee ("fanotify: use both marks when possible")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    54a307ba
fanotify.c 7.48 KB