Re: [patch] fix infinite loop in generic_file_splice_read()

From: Jens Axboe
Date: Wed Apr 09 2008 - 15:53:01 EST


On Wed, Apr 09 2008, Andrew Morton wrote:
> On Wed, 09 Apr 2008 17:57:56 +0200
> Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>
> > generic_file_splice_read() goes into an infinite loop if it races with
> > truncation. I've found this with fsx-linux on NFS over fuse.
> >
> > Perhaps the whole while() loop is bogus, but I can't tell from a
> > cursory glance at __generic_file_splice_read() if it will return zero
> > only on EOF, or it can do that for other reasons as well. In the
> > latter case the loop is obviously needed.
> >
> > This simplistic patch fixes the issue for me.
> >
>
> We found suspicious-looking code in generic_file_splice_read() back in
> February. See http://lkml.org/lkml/2008/2/29/443. I suspect that patch
> (if it works) will address the truncate lockup as well - it zaps the loop
> entirely.
>
> Unfortunately Allard never got back to us (probably because he's running
> 2.6.24 which has a quite different generic_file_splice_read()) and the
> patch didn't get anywhere.

Hmm strange, I was pretty sure I pushed my patch back then. I'll double
check and make sure it gets upstream asap.

> Nobody has tested this at all, to my knowledge.

The original reporter did not, however others did.

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/