> @@ -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.

Reply via email to