• Jan Kara's avatar
    fanotify: Use interruptible wait when waiting for permission events · fabf7f29
    Jan Kara authored
    When waiting for response to fanotify permission events, we currently
    use uninterruptible waits. That makes code simple however it can cause
    lots of processes to end up in uninterruptible sleep with hard reboot
    being the only alternative in case fanotify listener process stops
    responding (e.g. due to a bug in its implementation). Uninterruptible
    sleep also makes system hibernation fail if the listener gets frozen
    before the process generating fanotify permission event.
    
    Fix these problems by using interruptible sleep for waiting for response
    to fanotify event. This is slightly tricky though - we have to
    detect when the event got already reported to userspace as in that
    case we must not free the event. Instead we push the responsibility for
    freeing the event to the process that will write response to the
    event.
    Reported-by: default avatarOrion Poplawski <orion@nwra.com>
    Reported-by: default avatarKonstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Reviewed-by: default avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    fabf7f29
fanotify_user.c 28.2 KB