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; > }