Once reply response is set for all outstanding requests wake_up_all() of the ->access_waitq waiters so that they can finish user-wait. Otherwise fsnotify_destroy_group() can wait forever for ->user_waits to reach 0 (which it never will.) Signed-off-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> --- fs/notify/fanotify/fanotify_user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 87f861e9004f..95a3b843cbbf 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -1046,8 +1046,8 @@ static int fanotify_release(struct inode *ignored, struct file *file) } spin_unlock(&group->notification_lock); - /* Response for all permission events it set, wakeup waiters */ - wake_up(&group->fanotify_data.access_waitq); + /* Response for all permission events is set, wakeup waiters */ + wake_up_all(&group->fanotify_data.access_waitq); /* matches the fanotify_init->fsnotify_alloc_group */ fsnotify_destroy_group(group); -- 2.49.0.1101.gccaa498523-goog