Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1511467

Re: [PATCH] ubifs: Fix regression in ubifs_readdir()

From Jörg Krause <joerg.krause@embedded.rocks>
Newsgroups linux.kernel
Subject Re: [PATCH] ubifs: Fix regression in ubifs_readdir()
Date 2016-10-29 00:30 +0200
Message-ID <sxnOW-5U8-43@gated-at.bofh.it> (permalink)
References <sxc77-6yE-7@gated-at.bofh.it> <sxi2S-2c2-21@gated-at.bofh.it> <sxiPg-2Iq-3@gated-at.bofh.it>
Organization Embedded Rocks

Show all headers | View raw


Richard,

On Fri, 2016-10-28 at 19:07 +0200, Richard Weinberger wrote:
> Jörg,
> 
> On 28.10.2016 18:19, Jörg Krause wrote:
> > Hi,
> > 
> > On Fri, 2016-10-28 at 11:53 +0200, Richard Weinberger wrote:
> > > Commit c83ed4c9dbb35 ("ubifs: Abort readdir upon error") broke
> > > overlayfs support because the fix exposed an internal error
> > > code to VFS.
> > > 
> > > Reported-by: Peter Rosin <peda@axentia.se>
> > > Tested-by: Peter Rosin <peda@axentia.se>
> > > Reported-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
> > > Fixes: c83ed4c9dbb35 ("ubifs: Abort readdir upon error")
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Richard Weinberger <richard@nod.at>
> > > ---
> > >  fs/ubifs/dir.c | 8 ++++++++
> > >  1 file changed, 8 insertions(+)
> > > 
> > > diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> > > index bd4a5e8ce441..ca16c5d7bab1 100644
> > > --- a/fs/ubifs/dir.c
> > > +++ b/fs/ubifs/dir.c
> > > @@ -543,6 +543,14 @@ static int ubifs_readdir(struct file *file,
> > > struct dir_context *ctx)
> > >  
> > >  	if (err != -ENOENT)
> > >  		ubifs_err(c, "cannot find next direntry, error
> > > %d",
> > > err);
> > > +	else
> > > +		/*
> > > +		 * -ENOENT is a non-fatal error in this context,
> > > the
> > > TNC uses
> > > +		 * it to indicate that the cursor moved past the
> > > current directory
> > > +		 * and readdir() has to stop.
> > > +		 */
> > > +		err = 0;
> > > +
> > >  
> > >  	/* 2 is a special value indicating that there are no
> > > more
> > > direntries */
> > >  	ctx->pos = 2;
> > 
> > I'm not sure if it's related to the issue reported by Peter Rosin
> > and
> > Ralph Sennhauser, but I am still getting a kernel panic using UBIFS
> > with OverlayFS on Linux v4.9.0-rc2 with this patch applied:
> 
> Does reverting c83ed4c9dbb35 help?
> And are you 100% sure you applied the fix?

I double double checked. The fix was applied on the git tree, but the
compiler cache (I am using Buildroot with this option enabled) fooled
me by using an old copy. After disabling the compiler cache I got a
fixed build of the kernel. The panic is gone! Thanks!

> 
> Does the following WARN_ON() trigger?
> diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> index ca16c5d7bab1..12ffc91f7ef8 100644
> --- a/fs/ubifs/dir.c
> +++ b/fs/ubifs/dir.c
> @@ -554,6 +554,9 @@ static int ubifs_readdir(struct file *file,
> struct dir_context *ctx)
> 
>  	/* 2 is a special value indicating that there are no more
> direntries */
>  	ctx->pos = 2;
> +
> +	WARN_ON(err);
> +
>  	return err;
>  }

Best regards,
Jörg Krause

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] ubifs: Fix regression in ubifs_readdir() Richard Weinberger <richard@nod.at> - 2016-10-28 12:00 +0200
  Re: [PATCH] ubifs: Fix regression in ubifs_readdir() Jörg Krause <joerg.krause@embedded.rocks> - 2016-10-28 18:20 +0200
    Re: [PATCH] ubifs: Fix regression in ubifs_readdir() Richard Weinberger <richard@nod.at> - 2016-10-28 19:10 +0200
      Re: [PATCH] ubifs: Fix regression in ubifs_readdir() Jörg Krause <joerg.krause@embedded.rocks> - 2016-10-29 00:30 +0200
        Re: [PATCH] ubifs: Fix regression in ubifs_readdir() Richard Weinberger <richard@nod.at> - 2016-10-29 11:10 +0200

csiph-web