Loading fs/pipe.c +13 −9 Original line number Diff line number Diff line Loading @@ -509,19 +509,22 @@ static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) } } /* No kernel lock held - fine */ static __poll_t pipe_poll(struct file *filp, poll_table *wait) static struct wait_queue_head * pipe_get_poll_head(struct file *filp, __poll_t events) { __poll_t mask; struct pipe_inode_info *pipe = filp->private_data; int nrbufs; poll_wait(filp, &pipe->wait, wait); return &pipe->wait; } /* No kernel lock held - fine */ static __poll_t pipe_poll_mask(struct file *filp, __poll_t events) { struct pipe_inode_info *pipe = filp->private_data; int nrbufs = pipe->nrbufs; __poll_t mask = 0; /* Reading only -- no need for acquiring the semaphore. */ nrbufs = pipe->nrbufs; mask = 0; if (filp->f_mode & FMODE_READ) { mask = (nrbufs > 0) ? EPOLLIN | EPOLLRDNORM : 0; if (!pipe->writers && filp->f_version != pipe->w_counter) Loading Loading @@ -1020,7 +1023,8 @@ const struct file_operations pipefifo_fops = { .llseek = no_llseek, .read_iter = pipe_read, .write_iter = pipe_write, .poll = pipe_poll, .get_poll_head = pipe_get_poll_head, .poll_mask = pipe_poll_mask, .unlocked_ioctl = pipe_ioctl, .release = pipe_release, .fasync = pipe_fasync, Loading Loading
fs/pipe.c +13 −9 Original line number Diff line number Diff line Loading @@ -509,19 +509,22 @@ static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) } } /* No kernel lock held - fine */ static __poll_t pipe_poll(struct file *filp, poll_table *wait) static struct wait_queue_head * pipe_get_poll_head(struct file *filp, __poll_t events) { __poll_t mask; struct pipe_inode_info *pipe = filp->private_data; int nrbufs; poll_wait(filp, &pipe->wait, wait); return &pipe->wait; } /* No kernel lock held - fine */ static __poll_t pipe_poll_mask(struct file *filp, __poll_t events) { struct pipe_inode_info *pipe = filp->private_data; int nrbufs = pipe->nrbufs; __poll_t mask = 0; /* Reading only -- no need for acquiring the semaphore. */ nrbufs = pipe->nrbufs; mask = 0; if (filp->f_mode & FMODE_READ) { mask = (nrbufs > 0) ? EPOLLIN | EPOLLRDNORM : 0; if (!pipe->writers && filp->f_version != pipe->w_counter) Loading Loading @@ -1020,7 +1023,8 @@ const struct file_operations pipefifo_fops = { .llseek = no_llseek, .read_iter = pipe_read, .write_iter = pipe_write, .poll = pipe_poll, .get_poll_head = pipe_get_poll_head, .poll_mask = pipe_poll_mask, .unlocked_ioctl = pipe_ioctl, .release = pipe_release, .fasync = pipe_fasync, Loading