lift rcu_read_lock() into reverse_path_check()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 1 Oct 2020 18:11:00 +0000 (14:11 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 26 Oct 2020 00:02:07 +0000 (20:02 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/eventpoll.c

index c40576e..0667451 100644 (file)
@@ -1257,7 +1257,6 @@ static int reverse_path_check_proc(struct file *file, int depth)
                return -1;
 
        /* CTL_DEL can remove links here, but that can't increase our count */
-       rcu_read_lock();
        hlist_for_each_entry_rcu(epi, &file->f_ep_links, fllink) {
                struct file *recepient = epi->ep->file;
                if (WARN_ON(!is_file_epoll(recepient)))
@@ -1269,7 +1268,6 @@ static int reverse_path_check_proc(struct file *file, int depth)
                if (error != 0)
                        break;
        }
-       rcu_read_unlock();
        return error;
 }
 
@@ -1291,7 +1289,9 @@ static int reverse_path_check(void)
        /* let's call this for all tfiles */
        list_for_each_entry(current_file, &tfile_check_list, f_tfile_llink) {
                path_count_init();
+               rcu_read_lock();
                error = reverse_path_check_proc(current_file, 0);
+               rcu_read_unlock();
                if (error)
                        break;
        }