2021-05-08 07:25:16

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] ACPI: scan: Fix a memory leak in an error handling path

If 'acpi_device_set_name()' fails, we must free
'acpi_device_bus_id->bus_id' or there is a (potential) memory leak.

Fixes: eb50aaf960e3 ("ACPI: scan: Use unique number for instance_no")
Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/acpi/scan.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index a22778e880c2..651a431e2bbf 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -700,6 +700,7 @@ int acpi_device_add(struct acpi_device *device,

result = acpi_device_set_name(device, acpi_device_bus_id);
if (result) {
+ kfree_const(acpi_device_bus_id->bus_id);
kfree(acpi_device_bus_id);
goto err_unlock;
}
--
2.30.2


2021-05-10 13:06:58

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] ACPI: scan: Fix a memory leak in an error handling path

On Sat, May 08, 2021 at 09:23:09AM +0200, Christophe JAILLET wrote:
> If 'acpi_device_set_name()' fails, we must free
> 'acpi_device_bus_id->bus_id' or there is a (potential) memory leak.

Good catch!
I guess I have lost it somewhere in the middle of developing the mentioned fix.

Reviewed-by: Andy Shevchenko <[email protected]>

Thanks!

> Fixes: eb50aaf960e3 ("ACPI: scan: Use unique number for instance_no")
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> drivers/acpi/scan.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index a22778e880c2..651a431e2bbf 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -700,6 +700,7 @@ int acpi_device_add(struct acpi_device *device,
>
> result = acpi_device_set_name(device, acpi_device_bus_id);
> if (result) {
> + kfree_const(acpi_device_bus_id->bus_id);
> kfree(acpi_device_bus_id);
> goto err_unlock;
> }
> --
> 2.30.2
>

--
With Best Regards,
Andy Shevchenko


2021-05-10 17:05:44

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI: scan: Fix a memory leak in an error handling path

On Mon, May 10, 2021 at 3:17 PM Andy Shevchenko
<[email protected]> wrote:
>
> On Sat, May 08, 2021 at 09:23:09AM +0200, Christophe JAILLET wrote:
> > If 'acpi_device_set_name()' fails, we must free
> > 'acpi_device_bus_id->bus_id' or there is a (potential) memory leak.
>
> Good catch!
> I guess I have lost it somewhere in the middle of developing the mentioned fix.
>
> Reviewed-by: Andy Shevchenko <[email protected]>
>
> Thanks!
>
> > Fixes: eb50aaf960e3 ("ACPI: scan: Use unique number for instance_no")
> > Signed-off-by: Christophe JAILLET <[email protected]>
> > ---
> > drivers/acpi/scan.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > index a22778e880c2..651a431e2bbf 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -700,6 +700,7 @@ int acpi_device_add(struct acpi_device *device,
> >
> > result = acpi_device_set_name(device, acpi_device_bus_id);
> > if (result) {
> > + kfree_const(acpi_device_bus_id->bus_id);
> > kfree(acpi_device_bus_id);
> > goto err_unlock;
> > }
> > --

Applied as 5.13-rc material, thanks!