[PATCH] fs: check pointer returned by get_fsdevice_by_path before dereferencing
Antony Pavlov
antonynpavlov at gmail.com
Tue Mar 27 00:17:16 PDT 2018
On Sun, 18 Mar 2018 18:22:36 -0400
Gaël PORTAY <gael.portay at savoirfairelinux.com> 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 at savoirfairelinux.com>
> ---
> 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 at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
More information about the barebox
mailing list