[PATCH] cmd: sf: Fix sf probe crash

Michal Simek michal.simek at amd.com
Thu Jan 4 13:48:05 CET 2024



On 1/4/24 13:28, Weizhao Ouyang wrote:
> 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.

ok. Then good.

Acked-by: Michal Simek <michal.simek at amd.com>

Thanks,
Michal


More information about the U-Boot mailing list