On Sun, Dec 18, 2016 at 02:10:54PM -0800, Linus Torvalds wrote:
> On Sun, Dec 18, 2016 at 12:30 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > OK, I see what's going on - it's wait_for_space() lifted past the checks
> > for lack of readers. The fix, AFAICS, is simply
>
> Ugh. Does it have to be duplicated?
>
> How about just making the wait_for_space() loop be a for-loop, and writing it
> as
>
> for (;;) {
> if (unlikely(!pipe->readers)) {
> send_sig(SIGPIPE, current, 0);
> return -EPIPE;
> }
> if (pipe->nrbufs == pipe->buffers)
ITYM "!="...
|