don't bother with vfsmount_lock in mounts_poll()
wake_up_interruptible/poll_wait provide sufficient barriers; just use ACCESS_ONCE() to fetch ns->event and that's it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
aba809cf09
commit
aab407fc5c
@ -20,15 +20,15 @@ static unsigned mounts_poll(struct file *file, poll_table *wait)
|
||||
struct proc_mounts *p = proc_mounts(file->private_data);
|
||||
struct mnt_namespace *ns = p->ns;
|
||||
unsigned res = POLLIN | POLLRDNORM;
|
||||
int event;
|
||||
|
||||
poll_wait(file, &p->ns->poll, wait);
|
||||
|
||||
br_read_lock(&vfsmount_lock);
|
||||
if (p->m.poll_event != ns->event) {
|
||||
p->m.poll_event = ns->event;
|
||||
event = ACCESS_ONCE(ns->event);
|
||||
if (p->m.poll_event != event) {
|
||||
p->m.poll_event = event;
|
||||
res |= POLLERR | POLLPRI;
|
||||
}
|
||||
br_read_unlock(&vfsmount_lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user