Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942467AbcJ1RHg (ORCPT ); Fri, 28 Oct 2016 13:07:36 -0400 Received: from b.ns.miles-group.at ([95.130.255.144]:44723 "EHLO radon.swed.at" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S942413AbcJ1RHd (ORCPT ); Fri, 28 Oct 2016 13:07:33 -0400 Subject: Re: [PATCH] ubifs: Fix regression in ubifs_readdir() To: =?UTF-8?Q?J=c3=b6rg_Krause?= , linux-mtd@lists.infradead.org References: <1477648432-9543-1-git-send-email-richard@nod.at> <1477671544.8927.1.camel@embedded.rocks> Cc: dedekind1@gmail.com, linux-kernel@vger.kernel.org, stable@vger.kernel.org, adrian.hunter@intel.com, ralph.sennhauser@gmail.com, peda@axentia.se From: Richard Weinberger Message-ID: Date: Fri, 28 Oct 2016 19:07:26 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2 MIME-Version: 1.0 In-Reply-To: <1477671544.8927.1.camel@embedded.rocks> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2000 Lines: 70 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 >> Tested-by: Peter Rosin >> Reported-by: Ralph Sennhauser >> Fixes: c83ed4c9dbb35 ("ubifs: Abort readdir upon error") >> Cc: stable@vger.kernel.org >> Signed-off-by: Richard Weinberger >> --- >> 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? 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; } Thanks, //richard