public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
@ 2010-04-21  7:47 Stefano Babic
  2010-04-28  8:02 ` Stefan Roese
  2010-05-05 11:21 ` Quotient Remainder
  0 siblings, 2 replies; 6+ messages in thread
From: Stefano Babic @ 2010-04-21  7:47 UTC (permalink / raw)
  To: u-boot

ubifsmount is not working and causes an access with
a pointer set to zero because the ubifs_fs_type
is not initialized correctly.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 fs/ubifs/super.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 391dea4..39e3efe 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1178,6 +1178,7 @@ int ubifs_mount(char *vol_name)
 		ubifs_umount(ubifs_sb->s_fs_info);
 
 	INIT_LIST_HEAD(&ubifs_infos);
+	INIT_LIST_HEAD(&ubifs_fs_type.fs_supers);
 
 	/*
 	 * Mount in read-only mode
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
  2010-04-21  7:47 [U-Boot] [PATCH] ubifsmount fails due to not initialized list Stefano Babic
@ 2010-04-28  8:02 ` Stefan Roese
  2010-05-05 11:21 ` Quotient Remainder
  1 sibling, 0 replies; 6+ messages in thread
From: Stefan Roese @ 2010-04-28  8:02 UTC (permalink / raw)
  To: u-boot

On Wednesday 21 April 2010 09:47:19 Stefano Babic wrote:
> ubifsmount is not working and causes an access with
> a pointer set to zero because the ubifs_fs_type
> is not initialized correctly.

Applied to u-boot-ubi/master. Thanks.
 
Cheers,
Stefan

--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office at denx.de

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
  2010-04-21  7:47 [U-Boot] [PATCH] ubifsmount fails due to not initialized list Stefano Babic
  2010-04-28  8:02 ` Stefan Roese
@ 2010-05-05 11:21 ` Quotient Remainder
  2010-05-05 12:59   ` Stefano Babic
  1 sibling, 1 reply; 6+ messages in thread
From: Quotient Remainder @ 2010-05-05 11:21 UTC (permalink / raw)
  To: u-boot

On Wed, Apr 21, 2010 at 8:47 AM, Stefano Babic <sbabic@denx.de> wrote:

> ubifsmount is not working and causes an access with
> a pointer set to zero because the ubifs_fs_type
> is not initialized correctly.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
>  fs/ubifs/super.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
> index 391dea4..39e3efe 100644
> --- a/fs/ubifs/super.c
> +++ b/fs/ubifs/super.c
> @@ -1178,6 +1178,7 @@ int ubifs_mount(char *vol_name)
>                ubifs_umount(ubifs_sb->s_fs_info);
>
>        INIT_LIST_HEAD(&ubifs_infos);
> +       INIT_LIST_HEAD(&ubifs_fs_type.fs_supers);
>
>        /*
>         * Mount in read-only mode
> --
> 1.6.3.3
>
> Out of interest, how did something like this get away with only causing an
occasional failure?


> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
  2010-05-05 11:21 ` Quotient Remainder
@ 2010-05-05 12:59   ` Stefano Babic
  2010-05-05 14:10     ` Quotient Remainder
  0 siblings, 1 reply; 6+ messages in thread
From: Stefano Babic @ 2010-05-05 12:59 UTC (permalink / raw)
  To: u-boot

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....

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
  2010-05-05 12:59   ` Stefano Babic
@ 2010-05-05 14:10     ` Quotient Remainder
  2010-05-26 13:20       ` Christian Hohnstaedt
  0 siblings, 1 reply; 6+ messages in thread
From: Quotient Remainder @ 2010-05-05 14:10 UTC (permalink / raw)
  To: u-boot

On Wed, May 5, 2010 at 1:59 PM, Stefano Babic <sbabic@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...


> Best regards,
> Stefano Babic
>
> --
> =====================================================================
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
> =====================================================================
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH] ubifsmount fails due to not initialized list
  2010-05-05 14:10     ` Quotient Remainder
@ 2010-05-26 13:20       ` Christian Hohnstaedt
  0 siblings, 0 replies; 6+ messages in thread
From: Christian Hohnstaedt @ 2010-05-26 13:20 UTC (permalink / raw)
  To: u-boot

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@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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-05-26 13:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-21  7:47 [U-Boot] [PATCH] ubifsmount fails due to not initialized list Stefano Babic
2010-04-28  8:02 ` Stefan Roese
2010-05-05 11:21 ` Quotient Remainder
2010-05-05 12:59   ` Stefano Babic
2010-05-05 14:10     ` Quotient Remainder
2010-05-26 13:20       ` Christian Hohnstaedt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox