diff options
Diffstat (limited to 'fs/eventpoll.c')
-rw-r--r-- | fs/eventpoll.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/eventpoll.c b/fs/eventpoll.c index b73e0621ce9e..b10b48c2a7af 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c | |||
@@ -910,7 +910,7 @@ static const struct file_operations eventpoll_fops = { | |||
910 | void eventpoll_release_file(struct file *file) | 910 | void eventpoll_release_file(struct file *file) |
911 | { | 911 | { |
912 | struct eventpoll *ep; | 912 | struct eventpoll *ep; |
913 | struct epitem *epi; | 913 | struct epitem *epi, *next; |
914 | 914 | ||
915 | /* | 915 | /* |
916 | * We don't want to get "file->f_lock" because it is not | 916 | * We don't want to get "file->f_lock" because it is not |
@@ -926,7 +926,7 @@ void eventpoll_release_file(struct file *file) | |||
926 | * Besides, ep_remove() acquires the lock, so we can't hold it here. | 926 | * Besides, ep_remove() acquires the lock, so we can't hold it here. |
927 | */ | 927 | */ |
928 | mutex_lock(&epmutex); | 928 | mutex_lock(&epmutex); |
929 | list_for_each_entry_rcu(epi, &file->f_ep_links, fllink) { | 929 | list_for_each_entry_safe(epi, next, &file->f_ep_links, fllink) { |
930 | ep = epi->ep; | 930 | ep = epi->ep; |
931 | mutex_lock_nested(&ep->mtx, 0); | 931 | mutex_lock_nested(&ep->mtx, 0); |
932 | ep_remove(ep, epi); | 932 | ep_remove(ep, epi); |