On Sun, 18 Mar 2018 18:22:36 -0400 Gaël PORTAY <gael.portay@xxxxxxxxxxxxxxxxxxxx> wrote: > In __canonicalize_path() we dereference the pointer returned by > get_fsdevice_by_path() without checking if the pointer is NULL or not. > When the pointer is NULL it leads to an Ooops. > > Ooops, address error on load or ifetch! > > $ 0 : 00000000 00000001 a0000026 a0811c10 > $ 4 : a0402e60 a0402e48 a0811c00 a0402e58 > $ 8 : 00000001 00000000 0000005a 00000023 > $12 : 00000000 00000002 00601021 00000000 > $16 : a0402e60 a0402e50 a0402e39 a0810000 > $20 : a0402e38 a0811420 a0811424 00000000 > $24 : 00000000 a080de10 > $28 : 87f87d40 a03ffa68 a0810000 a080ce30 > Hi : 00000002 > Lo : 00000000 > epc : a080ce34 Salut Gaël! It looks like you use MIPS board. Your epc == 0xa080ce34 is inside KSEG1 region (uncached memory). May be there is no cache support in current barebox for your CPU. Which CPU core you use? Très cordialement, Antony Pavlov > ra : a080ce30 > Status: 00000006 > Cause : 40008010 > Config: 80040483 > > ### ERROR ### Please RESET the board ### > > Fixes: d79a81736 fs: Don't bother filesystems without link support with additional stat() calls > > Signed-off-by: Gaël PORTAY <gael.portay@xxxxxxxxxxxxxxxxxxxx> > --- > fs/fs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/fs.c b/fs/fs.c > index 88f0b1478..5135112c8 100644 > --- a/fs/fs.c > +++ b/fs/fs.c > @@ -191,7 +191,7 @@ static char *__canonicalize_path(const char *_pathname, int level) > * with an additional stat() call. > */ > fsdev = get_fsdevice_by_path(outpath); > - if (!fsdev->driver->readlink) > + if (!fsdev || !fsdev->driver->readlink) > continue; > > ret = __lstat(outpath, &s); > -- > 2.16.1 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox