|
@@ -647,17 +647,11 @@ static int mounts_release(struct inode *inode, struct file *file)
|
|
static unsigned mounts_poll(struct file *file, poll_table *wait)
|
|
static unsigned mounts_poll(struct file *file, poll_table *wait)
|
|
{
|
|
{
|
|
struct proc_mounts *p = file->private_data;
|
|
struct proc_mounts *p = file->private_data;
|
|
- struct mnt_namespace *ns = p->ns;
|
|
|
|
unsigned res = POLLIN | POLLRDNORM;
|
|
unsigned res = POLLIN | POLLRDNORM;
|
|
|
|
|
|
- poll_wait(file, &ns->poll, wait);
|
|
|
|
-
|
|
|
|
- spin_lock(&vfsmount_lock);
|
|
|
|
- if (p->event != ns->event) {
|
|
|
|
- p->event = ns->event;
|
|
|
|
|
|
+ poll_wait(file, &p->ns->poll, wait);
|
|
|
|
+ if (mnt_had_events(p))
|
|
res |= POLLERR | POLLPRI;
|
|
res |= POLLERR | POLLPRI;
|
|
- }
|
|
|
|
- spin_unlock(&vfsmount_lock);
|
|
|
|
|
|
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|