[U-Boot] [PATCH] ubifsmount fails due to not initialized list

Christian Hohnstaedt chohnstaedt at innominate.com
Wed May 26 15:20:37 CEST 2010


Hi,

On Wed, May 05, 2010 at 03:10:20PM +0100, Quotient Remainder wrote:
> On Wed, May 5, 2010 at 1:59 PM, Stefano Babic <sbabic at denx.de> wrote:
> 
> > Quotient Remainder wrote:
> >
> > > Out of interest, how did something like this get away with only causing
> > > an occasional failure?
> >
> > Well, there are some explanations. MMU is normally off and a Null
> > Pointer does not cause an exception in u-boot. If we get a failure, it
> > depends on the architecture we are using. On PowerPC, address 0 is
> > accessible and then we get no failure. In this particular case
> > (ubifsmount), the list is set but not used by the calling function.
> > Because writing to address 0 is allowed, the bug is not noticeable.
> >
> > Different is on arm, where I have found the problem. Because in this
> > case address 0 is not accessible at all, u-boot hangs and it is not
> > possible to avoid to see that we have a problem....
> >
> >
> I've been using UBIFS on arm (1136) with the v2009.11 release and it
> works almost all the time.  Sometimes U-Boot fails to mount the
> UBIFS (1 in 100 boots, maybe), and in these cases I was putting it
> down to forgetting to do a sync in Linux before rebooting.  I wonder
> if this was the problem all along...

Probably not.

IMHO rebooting without a sync is pretty common and should work.

With v2009.11 and the "INIT_LIST_HEAD(&ubifs_fs_type.fs_supers);" fix
I was able to force a mount-failure of UBIFS in u-boot by
executing some tar under linux in parallel
and pulling the plug in the meantime:
 "tar zxf some_tar.tgz & mkdir -p P; tar zxf some_tar.tgz -C P"

I fixed it ("fixed" as in http://thereifixedit.com) by disabling
journal-replaying.
In fs/ubifs/super.c:686 I skipped "ubifs_replay_journal(c)".

Without that "fix" I needed the linux kernel to once mount the volume
and replay the journal. Afterwards everything was fine on next
volume mount in u-boot.

I failed to find the cause in ubifs_replay_journal().

How harmful is the skipping of ubifs_replay_journal() ?
Does someone have a real fix ?


Christian Hohnstaedt

-- 
Christian Hohnstaedt / Project Manager Hardware and Manufacturing

Innominate Security Technologies AG / protecting industrial networks
tel: +49.30.921028.208 / fax: +49.30.921028.020
Rudower Chaussee 13, D-12489 Berlin / http://www.innominate.com

Register Court: AG Charlottenburg, HR B 81603
Management Board: Dirk Seewald
Chairman of the Supervisory Board: Volker Bibelhausen


More information about the U-Boot mailing list