[PATCH] cmd: sf: Fix sf probe crash

Weizhao Ouyang o451686892 at gmail.com
Thu Jan 4 13:28:25 CET 2024


On Thu, Jan 4, 2024 at 8:21 PM Michal Simek <michal.simek at amd.com> wrote:
>
>
>
> On 1/4/24 13:15, Weizhao Ouyang wrote:
> > On Thu, Jan 4, 2024 at 8:00 PM Michal Simek <michal.simek at amd.com> wrote:
> >>
> >>
> >>
> >> On 1/4/24 12:46, Weizhao Ouyang wrote:
> >>> Handle the return value of spi_flash_probe_bus_cs() to avoid sf probe
> >>> crashes.
> >>>
> >>> Signed-off-by: Weizhao Ouyang <o451686892 at gmail.com>
> >>> ---
> >>>    cmd/sf.c | 5 +++--
> >>>    1 file changed, 3 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/cmd/sf.c b/cmd/sf.c
> >>> index 730996c02b..e3866899f6 100644
> >>> --- a/cmd/sf.c
> >>> +++ b/cmd/sf.c
> >>> @@ -135,8 +135,9 @@ static int do_spi_flash_probe(int argc, char *const argv[])
> >>>        }
> >>>        flash = NULL;
> >>>        if (use_dt) {
> >>> -             spi_flash_probe_bus_cs(bus, cs, &new);
> >>> -             flash = dev_get_uclass_priv(new);
> >>> +             ret = spi_flash_probe_bus_cs(bus, cs, &new);
> >>
> >> if (ret)
> >>          return ret;
> >>
> >> don't you want to rather propagate that error?
> >>
> >
> > Well, since the spi_flash is empty, the following code will
> > print the error message and return.
>
> And you return 0 which means everything is fine. But is everything fine in this
> case? Or do you want to see the error?
>
> This is command it means you can simply use && and if previous command succeed
> you can call something else.
>

Hi Michal,

Please check the code that follows this commit snippet:

if (!flash) {
    printf("Failed to initialize SPI flash at %u:%u (error %d)\n",
        bus, cs, ret);
    return 1;
}

it will print the error and return 1 as the return value.

BR,
Weizhao


More information about the U-Boot mailing list