From: Evgeniy Polyakov Socket enqueue callback must increase reference counter for both backing inode and file. Signed-off-by: Evgeniy Polyakov Signed-off-by: Andrew Morton --- kernel/kevent/kevent_socket.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN kernel/kevent/kevent_socket.c~kevent-fix-socket-notifications kernel/kevent/kevent_socket.c --- a/kernel/kevent/kevent_socket.c~kevent-fix-socket-notifications +++ a/kernel/kevent/kevent_socket.c @@ -61,7 +61,6 @@ int kevent_socket_enqueue(struct kevent if (err) goto err_out_dequeue; - sockfd_put(sock); return err; err_out_dequeue: @@ -77,9 +76,13 @@ err_out_exit: int kevent_socket_dequeue(struct kevent *k) { struct inode *inode = k->st->origin; + struct socket *sock; kevent_storage_dequeue(k->st, k); + + sock = SOCKET_I(inode); iput(inode); + sockfd_put(sock); return 0; } _