Re: [PATCH] autofs: don't stuck in a loop if vfs_write returns an error

From: Ian Kent
Date: Mon May 23 2016 - 21:34:34 EST


On Mon, 2016-05-23 at 14:50 -0700, Andrei Vagin wrote:
> Hi Ian,
>
> When are you going to apply this patch? We can't test linux-next without it.

I though I sent this with the last series but I can't see that I have.

I have the rest of that series to send over to Andrew which I was planning to do
after the current merge window closes (which is about now I guess).

I'll include it in that series.
Sorry for the hold up, ;)

Ian

>
> Thanks,
> Andrew
>
>
> On Fri, Apr 1, 2016 at 12:37 AM, Ian Kent <raven@xxxxxxxxxx> wrote:
> > On Thu, 2016-03-31 at 22:12 -0700, Andrey Vagin wrote:
> > > From: Andrey Vagin <avagin@xxxxxxxxxx>
> > >
> > > __vfs_write() returns a negative value in a error case.
> >
> > Ha, right, I'll send this along to Andrew with my next series which
> > should be soon.
> >
> > >
> > > Cc: Ian Kent <raven@xxxxxxxxxx>
> > > Signed-off-by: Andrey Vagin <avagin@xxxxxxxxxx>
> > > ---
> > > fs/autofs4/waitq.c | 7 ++++---
> > > 1 file changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
> > > index 0146d91..631f155 100644
> > > --- a/fs/autofs4/waitq.c
> > > +++ b/fs/autofs4/waitq.c
> > > @@ -66,11 +66,12 @@ static int autofs4_write(struct autofs_sb_info
> > > *sbi,
> > > set_fs(KERNEL_DS);
> > >
> > > mutex_lock(&sbi->pipe_mutex);
> > > - wr = __vfs_write(file, data, bytes, &file->f_pos);
> > > - while (bytes && wr) {
> > > + while (bytes) {
> > > + wr = __vfs_write(file, data, bytes, &file->f_pos);
> > > + if (wr <= 0)
> > > + break;
> > > data += wr;
> > > bytes -= wr;
> > > - wr = __vfs_write(file, data, bytes, &file->f_pos);
> > > }
> > > mutex_unlock(&sbi->pipe_mutex);
> > >