[PATCH 4.12 021/106] userfaultfd: non-cooperative: flush event_wqh at release time

2017-08-09 Thread Greg Kroah-Hartman
4.12-stable review patch.  If anyone has any objections, please let me know.

--

From: Mike Rapoport 

commit 5a18b64e3f02125be1c0ef777501ae38aafe2a24 upstream.

There may still be threads waiting on event_wqh at the time the
userfault file descriptor is closed.  Flush the events wait-queue to
prevent waiting threads from hanging.

Link: 
http://lkml.kernel.org/r/1501398127-30419-1-git-send-email-r...@linux.vnet.ibm.com
Fixes: 9cd75c3cd4c3d ("userfaultfd: non-cooperative: add ability to report
non-PF events from uffd descriptor")
Signed-off-by: Mike Rapoport 
Cc: Andrea Arcangeli 
Cc: "Dr. David Alan Gilbert" 
Cc: Pavel Emelyanov 
Signed-off-by: Andrew Morton 
Signed-off-by: Linus Torvalds 
Signed-off-by: Greg Kroah-Hartman 

---
 fs/userfaultfd.c |3 +++
 1 file changed, 3 insertions(+)

--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -851,6 +851,9 @@ wakeup:
__wake_up_locked_key(>fault_wqh, TASK_NORMAL, );
spin_unlock(>fault_pending_wqh.lock);
 
+   /* Flush pending events that may still wait on event_wqh */
+   wake_up_all(>event_wqh);
+
wake_up_poll(>fd_wqh, POLLHUP);
userfaultfd_ctx_put(ctx);
return 0;




[PATCH 4.12 021/106] userfaultfd: non-cooperative: flush event_wqh at release time

2017-08-09 Thread Greg Kroah-Hartman
4.12-stable review patch.  If anyone has any objections, please let me know.

--

From: Mike Rapoport 

commit 5a18b64e3f02125be1c0ef777501ae38aafe2a24 upstream.

There may still be threads waiting on event_wqh at the time the
userfault file descriptor is closed.  Flush the events wait-queue to
prevent waiting threads from hanging.

Link: 
http://lkml.kernel.org/r/1501398127-30419-1-git-send-email-r...@linux.vnet.ibm.com
Fixes: 9cd75c3cd4c3d ("userfaultfd: non-cooperative: add ability to report
non-PF events from uffd descriptor")
Signed-off-by: Mike Rapoport 
Cc: Andrea Arcangeli 
Cc: "Dr. David Alan Gilbert" 
Cc: Pavel Emelyanov 
Signed-off-by: Andrew Morton 
Signed-off-by: Linus Torvalds 
Signed-off-by: Greg Kroah-Hartman 

---
 fs/userfaultfd.c |3 +++
 1 file changed, 3 insertions(+)

--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -851,6 +851,9 @@ wakeup:
__wake_up_locked_key(>fault_wqh, TASK_NORMAL, );
spin_unlock(>fault_pending_wqh.lock);
 
+   /* Flush pending events that may still wait on event_wqh */
+   wake_up_all(>event_wqh);
+
wake_up_poll(>fd_wqh, POLLHUP);
userfaultfd_ctx_put(ctx);
return 0;