The patch titled Subject: s/epoll: robustify irq safety with lockdep_assert_irqs_enabled() has been added to the -mm tree. Its filename is fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Davidlohr Bueso <dave@xxxxxxxxxxxx> Subject: s/epoll: robustify irq safety with lockdep_assert_irqs_enabled() Sprinkle lockdep_assert_irqs_enabled() checks in the functions that do not save and restore interrupts when dealing with the ep->wq.lock. These are ep_scan_ready_list() and those called by epoll_ctl(): ep_insert, ep_modify and ep_remove. Link: http://lkml.kernel.org/r/20180721183127.3busfa335zlcjeox@linux-r8p5 Signed-off-by: Davidlohr Bueso <dbueso@xxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/eventpoll.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff -puN fs/eventpoll.c~fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled fs/eventpoll.c --- a/fs/eventpoll.c~fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled +++ a/fs/eventpoll.c @@ -670,6 +670,9 @@ static __poll_t ep_scan_ready_list(struc struct epitem *epi, *nepi; LIST_HEAD(txlist); + /* must not be called with irqs off */ + lockdep_assert_irqs_enabled(); + /* * We need to lock this because we could be hit by * eventpoll_release_file() and epoll_ctl(). @@ -764,6 +767,9 @@ static int ep_remove(struct eventpoll *e { struct file *file = epi->ffd.file; + /* must not be called with irqs off */ + lockdep_assert_irqs_enabled(); + /* * Removes poll wait queue hooks. */ @@ -1412,6 +1418,9 @@ static int ep_insert(struct eventpoll *e struct epitem *epi; struct ep_pqueue epq; + /* must not be called with irqs off */ + lockdep_assert_irqs_enabled(); + user_watches = atomic_long_read(&ep->user->epoll_watches); if (unlikely(user_watches >= max_user_watches)) return -ENOSPC; @@ -1540,6 +1549,9 @@ static int ep_modify(struct eventpoll *e int pwake = 0; poll_table pt; + /* must not be called with irqs off */ + lockdep_assert_irqs_enabled(); + init_poll_funcptr(&pt, NULL); /* _ Patches currently in -mm which might be from dave@xxxxxxxxxxxx are ipc-sem-prevent-queuestatus-tearing-in-semop.patch fs-epoll-loosen-irq-safety-in-ep_scan_ready_list.patch fs-epoll-loosen-irq-safety-in-epoll_insert-and-epoll_remove.patch fs-epoll-robustify-irq-safety-with-lockdep_assert_irqs_enabled.patch ipc-drop-ipc_lock.patch lib-rhashtable-simplify-bucket_table_alloc.patch lib-rhashtable-guarantee-initial-hashtable-allocation.patch ipc-get-rid-of-ids-tables_initialized-hack.patch ipc-simplify-ipc-initialization.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html