diff options
Diffstat (limited to 'fs/pipe.c')
-rw-r--r-- | fs/pipe.c | 22 |
1 files changed, 9 insertions, 13 deletions
@@ -509,22 +509,19 @@ static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
509 | } | 509 | } |
510 | } | 510 | } |
511 | 511 | ||
512 | static struct wait_queue_head * | ||
513 | pipe_get_poll_head(struct file *filp, __poll_t events) | ||
514 | { | ||
515 | struct pipe_inode_info *pipe = filp->private_data; | ||
516 | |||
517 | return &pipe->wait; | ||
518 | } | ||
519 | |||
520 | /* No kernel lock held - fine */ | 512 | /* No kernel lock held - fine */ |
521 | static __poll_t pipe_poll_mask(struct file *filp, __poll_t events) | 513 | static __poll_t |
514 | pipe_poll(struct file *filp, poll_table *wait) | ||
522 | { | 515 | { |
516 | __poll_t mask; | ||
523 | struct pipe_inode_info *pipe = filp->private_data; | 517 | struct pipe_inode_info *pipe = filp->private_data; |
524 | int nrbufs = pipe->nrbufs; | 518 | int nrbufs; |
525 | __poll_t mask = 0; | 519 | |
520 | poll_wait(filp, &pipe->wait, wait); | ||
526 | 521 | ||
527 | /* Reading only -- no need for acquiring the semaphore. */ | 522 | /* Reading only -- no need for acquiring the semaphore. */ |
523 | nrbufs = pipe->nrbufs; | ||
524 | mask = 0; | ||
528 | if (filp->f_mode & FMODE_READ) { | 525 | if (filp->f_mode & FMODE_READ) { |
529 | mask = (nrbufs > 0) ? EPOLLIN | EPOLLRDNORM : 0; | 526 | mask = (nrbufs > 0) ? EPOLLIN | EPOLLRDNORM : 0; |
530 | if (!pipe->writers && filp->f_version != pipe->w_counter) | 527 | if (!pipe->writers && filp->f_version != pipe->w_counter) |
@@ -1023,8 +1020,7 @@ const struct file_operations pipefifo_fops = { | |||
1023 | .llseek = no_llseek, | 1020 | .llseek = no_llseek, |
1024 | .read_iter = pipe_read, | 1021 | .read_iter = pipe_read, |
1025 | .write_iter = pipe_write, | 1022 | .write_iter = pipe_write, |
1026 | .get_poll_head = pipe_get_poll_head, | 1023 | .poll = pipe_poll, |
1027 | .poll_mask = pipe_poll_mask, | ||
1028 | .unlocked_ioctl = pipe_ioctl, | 1024 | .unlocked_ioctl = pipe_ioctl, |
1029 | .release = pipe_release, | 1025 | .release = pipe_release, |
1030 | .fasync = pipe_fasync, | 1026 | .fasync = pipe_fasync, |