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 | } |