On Mon, 24 Mar 2025 09:34:06 +0100
Vincent Stehlé <vincent.ste...@arm.com> wrote:

> In the case of a memory allocation error, the ahci_port_start() function
> tries to free the `pp' pointer.
> This pointer was not dynamically allocated but does in fact point to an
> element of the port[] array member of the struct ahci_uc_priv.
> Remove the erroneous call to free() to fix this.

I think free() doesn't do much (harm) in U-Boot, but it's definitely not
right here. I see one malloc() in this driver (for ataid[port]), for which
I cannot find the corresponding free(), but this is a separate issue, and
this patch here is fine.

> Fixes: 4782ac80b02f ("Add AHCI support to u-boot")
> Signed-off-by: Vincent Stehlé <vincent.ste...@arm.com>

Reviewed-by: Andre Przywara <andre.przyw...@arm.com>

Cheers,
Andre

> Cc: Tom Rini <tr...@konsulko.com>
> Cc: Jason Jin <jason....@freescale.com>
> ---
>  drivers/ata/ahci.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index 8058d5ff1c3..e593e228685 100644
> --- a/drivers/ata/ahci.c
> +++ b/drivers/ata/ahci.c
> @@ -463,7 +463,6 @@ static int ahci_port_start(struct ahci_uc_priv *uc_priv, 
> u8 port)
>  
>       mem = memalign(2048, AHCI_PORT_PRIV_DMA_SZ);
>       if (!mem) {
> -             free(pp);
>               printf("%s: No mem for table!\n", __func__);
>               return -ENOMEM;
>       }

Reply via email to