Loading fs/pipe.c +6 −9 Original line number Diff line number Diff line Loading @@ -328,10 +328,12 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) spin_lock_irq(&pipe->wait.lock); tail++; pipe->tail = tail; do_wakeup = 0; do_wakeup = 1; if (head - (tail - 1) == pipe->max_usage) wake_up_interruptible_sync_poll_locked( &pipe->wait, EPOLLOUT | EPOLLWRNORM); spin_unlock_irq(&pipe->wait.lock); if (head - (tail - 1) == pipe->max_usage) kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); } total_len -= chars; Loading Loading @@ -361,11 +363,6 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) ret = -ERESTARTSYS; break; } if (do_wakeup) { wake_up_interruptible_sync_poll(&pipe->wait, EPOLLOUT | EPOLLWRNORM); kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); do_wakeup = 0; } pipe_wait(pipe); } __pipe_unlock(pipe); Loading Loading
fs/pipe.c +6 −9 Original line number Diff line number Diff line Loading @@ -328,10 +328,12 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) spin_lock_irq(&pipe->wait.lock); tail++; pipe->tail = tail; do_wakeup = 0; do_wakeup = 1; if (head - (tail - 1) == pipe->max_usage) wake_up_interruptible_sync_poll_locked( &pipe->wait, EPOLLOUT | EPOLLWRNORM); spin_unlock_irq(&pipe->wait.lock); if (head - (tail - 1) == pipe->max_usage) kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); } total_len -= chars; Loading Loading @@ -361,11 +363,6 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to) ret = -ERESTARTSYS; break; } if (do_wakeup) { wake_up_interruptible_sync_poll(&pipe->wait, EPOLLOUT | EPOLLWRNORM); kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); do_wakeup = 0; } pipe_wait(pipe); } __pipe_unlock(pipe); Loading