On Mon, 24 Mar 2025 09:34:06 +0100
Vincent Stehlé <[email protected]> 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é <[email protected]>
Reviewed-by: Andre Przywara <[email protected]>
Cheers,
Andre
> Cc: Tom Rini <[email protected]>
> Cc: Jason Jin <[email protected]>
> ---
> 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;
> }