> @@ -395,9 +401,8 @@ pipeunlock(struct pipe *pipe)
> KASSERT(pipe->pipe_state & PIPE_LOCKFL);
>
> pipe->pipe_state &= ~PIPE_LOCKFL;
> - if (pipe->pipe_state & PIPE_LWANT) {
> - pipe->pipe_state &= ~PIPE_LWANT;
> - cv_broadcast(&pipe->pipe_lkcv);
> + if (pipe->pipe_waiters > 0) {
> + cv_signal(&pipe->pipe_lkcv);
> }
> }this part misses the while loop from the freebsd version i think? .mrg.
