diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 4e3f523d8370..2a48583f3b43 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -880,6 +880,7 @@ pipe_direct_write(wpipe, uio) wpipe->pipe_state &= ~PIPE_WANTR; wakeup(wpipe); } + pipeselwakeup(wpipe); wpipe->pipe_state |= PIPE_WANTW; pipeunlock(wpipe); error = msleep(wpipe, PIPE_MTX(wpipe), @@ -895,6 +896,7 @@ pipe_direct_write(wpipe, uio) wpipe->pipe_state &= ~PIPE_WANTR; wakeup(wpipe); } + pipeselwakeup(wpipe); wpipe->pipe_state |= PIPE_WANTW; pipeunlock(wpipe); error = msleep(wpipe, PIPE_MTX(wpipe), @@ -1080,6 +1082,8 @@ pipe_write(fp, uio, active_cred, flags, td) wpipe->pipe_state &= ~PIPE_WANTR; wakeup(wpipe); } + pipeselwakeup(wpipe); + wpipe->pipe_state |= PIPE_WANTW; pipeunlock(wpipe); error = msleep(wpipe, PIPE_MTX(rpipe), PRIBIO | PCATCH, "pipbww", 0);