UBIFS: make space fixup work in the remount case
Artem Bityutskiy
artem.bityutskiy at linux.intel.com
Mon Apr 7 03:43:43 PDT 2014
On Tue, 2014-04-01 at 16:39 +0300, Dan Carpenter wrote:
> On Mon, Apr 15, 2013 at 01:39:06PM +0300, Artem Bityutskiy wrote:
> > On Mon, 2013-04-15 at 13:19 +0300, Dan Carpenter wrote:
> > > On Mon, Apr 15, 2013 at 01:11:33PM +0300, Artem Bityutskiy wrote:
> > > > On Mon, 2013-04-15 at 12:59 +0300, Dan Carpenter wrote:
> > > > > 1571 if (c->space_fixup) {
> > > > > 1572 err = ubifs_fixup_free_space(c);
> > > > > 1573 if (err)
> > > > > 1574 return err;
> > > > > ^^^^^^^^^^
> > > > > Shouldn't this be a "goto out?". We're holding the c->umount_mutex.
> > > >
> > > > Hi Dan, I fixed this up and answered the reporter:
> > > > https://patchwork.kernel.org/patch/2284681/
> > > >
> > > > It is now 'goto out'. Thanks!
> > >
> > > Huh... That wasn't who I expected to report it. :P It's good to
> > > know that these kind of bugs don't last very long.
> >
> > The story actually was that I noticed this myself after running Aiaiai
> > and fixed it up "in-place", and then several people reported, and I
> > answered to one of them.
>
> Hi Artem,
>
> This showed up in my smatch output again today. Whatever happened with
> this. I reported it last Jun and last Nov as well apparently.
Hmm, I was sure I fixed this, but it is still there.
OK, created and pushed a fix to the master branch. It won't hit
linux-next so far, I'll propagate it there once 3.15-rc1 or -rc2 is out.
Thanks!
From: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
Date: Mon, 7 Apr 2014 13:39:06 +0300
Subject: [PATCH] UBIFS: fix remount error path
Dan's "smatch" checker found out that there was a bug in the error path of the
'ubifs_remount_rw()' function. Instead of jumping to the "out" label which
cleans-things up, we just returned.
This patch fixes the problem.
Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy at linux.intel.com>
---
fs/ubifs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 5ded849..7e71ac9 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1556,7 +1556,7 @@ static int ubifs_remount_rw(struct ubifs_info *c)
if (c->space_fixup) {
err = ubifs_fixup_free_space(c);
if (err)
- return err;
+ goto out;
}
err = check_free_space(c);
--
1.8.5.3
--
Best Regards,
Artem Bityutskiy
More information about the linux-mtd
mailing list