mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
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 <[email protected]> Cc: Al Viro <[email protected]> Cc: Arve Hjønnevåg <[email protected]> Cc: Davide Libenzi <[email protected]> Cc: Eric Dumazet <[email protected]> Cc: NeilBrown <[email protected]>, Cc: Rafael J. Wysocki <[email protected]> Cc: Oleg Nesterov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
eea1d58591
commit
ddf676c38b
1 changed files with 4 additions and 0 deletions
|
|
@ -745,11 +745,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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue