The patch titled Subject: epoll: lock ep->mtx in ep_free to silence lockdep has been added to the -mm tree. Its filename is epoll-lock-ep-mtx-in-ep_free-to-silence-lockdep.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/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Eric Wong <normalperson@xxxxxxxx> Subject: epoll: lock ep->mtx in ep_free to silence lockdep Technically we do not need to hold ep->mtx during ep_free since we are certain there are no other users of ep at that point. However, lockdep complains with a "suspicious rcu_dereference_check() usage!" message; so lock the mutex before ep_remove to silence the warning. Signed-off-by: Eric Wong <normalperson@xxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Arve Hjønnevåg <arve@xxxxxxxxxxx> Cc: Davide Libenzi <davidel@xxxxxxxxxxxxxxx> Cc: Eric Dumazet <eric.dumazet@xxxxxxxxx> Cc: NeilBrown <neilb@xxxxxxx>, Cc: Rafael J. Wysocki <rjw@xxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/eventpoll.c | 4 ++++ 1 file changed, 4 insertions(+) diff -puN fs/eventpoll.c~epoll-lock-ep-mtx-in-ep_free-to-silence-lockdep fs/eventpoll.c --- a/fs/eventpoll.c~epoll-lock-ep-mtx-in-ep_free-to-silence-lockdep +++ a/fs/eventpoll.c @@ -776,11 +776,15 @@ static void ep_free(struct eventpoll *ep * point we are sure no poll callbacks will be lingering around, and also by * holding "epmutex" we can be sure that no file cleanup code will hit * us during this operation. So we can avoid the lock on "ep->lock". + * We do not need to lock ep->mtx, either, we only do it to prevent + * a lockdep warning. */ + mutex_lock(&ep->mtx); while ((rbp = rb_first(&ep->rbr)) != NULL) { epi = rb_entry(rbp, struct epitem, rbn); ep_remove(ep, epi); } + mutex_unlock(&ep->mtx); mutex_unlock(&epmutex); mutex_destroy(&ep->mtx); _ Patches currently in -mm which might be from normalperson@xxxxxxxx are epoll-trim-epitem-by-one-cache-line-on-x86_64.patch epoll-trim-epitem-by-one-cache-line-on-x86_64-fix.patch epoll-trim-epitem-by-one-cache-line-on-x86_64-fix-fix.patch epoll-use-rcu-to-protect-wakeup_source-in-epitem.patch epoll-lock-ep-mtx-in-ep_free-to-silence-lockdep.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