diff options
Diffstat (limited to 'fs/pipe.c')
| -rw-r--r-- | fs/pipe.c | 10 |
1 files changed, 5 insertions, 5 deletions
| @@ -441,7 +441,7 @@ redo: | |||
| 441 | break; | 441 | break; |
| 442 | } | 442 | } |
| 443 | if (do_wakeup) { | 443 | if (do_wakeup) { |
| 444 | wake_up_interruptible_sync_poll(&pipe->wait, POLLOUT); | 444 | wake_up_interruptible_sync_poll(&pipe->wait, POLLOUT | POLLWRNORM); |
| 445 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 445 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
| 446 | } | 446 | } |
| 447 | pipe_wait(pipe); | 447 | pipe_wait(pipe); |
| @@ -450,7 +450,7 @@ redo: | |||
| 450 | 450 | ||
| 451 | /* Signal writers asynchronously that there is more room. */ | 451 | /* Signal writers asynchronously that there is more room. */ |
| 452 | if (do_wakeup) { | 452 | if (do_wakeup) { |
| 453 | wake_up_interruptible_sync_poll(&pipe->wait, POLLOUT); | 453 | wake_up_interruptible_sync_poll(&pipe->wait, POLLOUT | POLLWRNORM); |
| 454 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 454 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
| 455 | } | 455 | } |
| 456 | if (ret > 0) | 456 | if (ret > 0) |
| @@ -612,7 +612,7 @@ redo2: | |||
| 612 | break; | 612 | break; |
| 613 | } | 613 | } |
| 614 | if (do_wakeup) { | 614 | if (do_wakeup) { |
| 615 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN); | 615 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLRDNORM); |
| 616 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 616 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
| 617 | do_wakeup = 0; | 617 | do_wakeup = 0; |
| 618 | } | 618 | } |
| @@ -623,7 +623,7 @@ redo2: | |||
| 623 | out: | 623 | out: |
| 624 | mutex_unlock(&inode->i_mutex); | 624 | mutex_unlock(&inode->i_mutex); |
| 625 | if (do_wakeup) { | 625 | if (do_wakeup) { |
| 626 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN); | 626 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLRDNORM); |
| 627 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 627 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
| 628 | } | 628 | } |
| 629 | if (ret > 0) | 629 | if (ret > 0) |
| @@ -715,7 +715,7 @@ pipe_release(struct inode *inode, int decr, int decw) | |||
| 715 | if (!pipe->readers && !pipe->writers) { | 715 | if (!pipe->readers && !pipe->writers) { |
| 716 | free_pipe_info(inode); | 716 | free_pipe_info(inode); |
| 717 | } else { | 717 | } else { |
| 718 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT); | 718 | wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP); |
| 719 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 719 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
| 720 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 720 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
| 721 | } | 721 | } |
