diff options
Diffstat (limited to 'fs/pipe.c')
| -rw-r--r-- | fs/pipe.c | 9 |
1 files changed, 4 insertions, 5 deletions
| @@ -45,8 +45,7 @@ void pipe_wait(struct pipe_inode_info *pipe) | |||
| 45 | * Pipes are system-local resources, so sleeping on them | 45 | * Pipes are system-local resources, so sleeping on them |
| 46 | * is considered a noninteractive wait: | 46 | * is considered a noninteractive wait: |
| 47 | */ | 47 | */ |
| 48 | prepare_to_wait(&pipe->wait, &wait, | 48 | prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE); |
| 49 | TASK_INTERRUPTIBLE | TASK_NONINTERACTIVE); | ||
| 50 | if (pipe->inode) | 49 | if (pipe->inode) |
| 51 | mutex_unlock(&pipe->inode->i_mutex); | 50 | mutex_unlock(&pipe->inode->i_mutex); |
| 52 | schedule(); | 51 | schedule(); |
| @@ -383,7 +382,7 @@ redo: | |||
| 383 | 382 | ||
| 384 | /* Signal writers asynchronously that there is more room. */ | 383 | /* Signal writers asynchronously that there is more room. */ |
| 385 | if (do_wakeup) { | 384 | if (do_wakeup) { |
| 386 | wake_up_interruptible(&pipe->wait); | 385 | wake_up_interruptible_sync(&pipe->wait); |
| 387 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 386 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
| 388 | } | 387 | } |
| 389 | if (ret > 0) | 388 | if (ret > 0) |
| @@ -556,7 +555,7 @@ redo2: | |||
| 556 | out: | 555 | out: |
| 557 | mutex_unlock(&inode->i_mutex); | 556 | mutex_unlock(&inode->i_mutex); |
| 558 | if (do_wakeup) { | 557 | if (do_wakeup) { |
| 559 | wake_up_interruptible(&pipe->wait); | 558 | wake_up_interruptible_sync(&pipe->wait); |
| 560 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 559 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
| 561 | } | 560 | } |
| 562 | if (ret > 0) | 561 | if (ret > 0) |
| @@ -650,7 +649,7 @@ pipe_release(struct inode *inode, int decr, int decw) | |||
| 650 | if (!pipe->readers && !pipe->writers) { | 649 | if (!pipe->readers && !pipe->writers) { |
| 651 | free_pipe_info(inode); | 650 | free_pipe_info(inode); |
| 652 | } else { | 651 | } else { |
| 653 | wake_up_interruptible(&pipe->wait); | 652 | wake_up_interruptible_sync(&pipe->wait); |
| 654 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); | 653 | kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); |
| 655 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); | 654 | kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); |
| 656 | } | 655 | } |
