RE: [PATCH] platform/x86: hp-bioscfg: Fix some memory leaks in hp_populate_enumeration_elements_from_package()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Christophe,

I will submit a patch to address memory leaks in hp_populate_enumeration_elements_from_package() reported here and to address some uninitialized variable errors reported in a separate email.


Regards,

Jorge Lopez
HP Inc

"Once you stop learning, you start dying"
Albert Einstein

> -----Original Message-----
> From: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
> Sent: Monday, July 17, 2023 3:54 PM
> To: Lopez, Jorge A (Security) <jorge.lopez2@xxxxxx>; Hans de Goede
> <hdegoede@xxxxxxxxxx>; Mark Gross <markgross@xxxxxxxxxx>; Thomas
> Weißschuh <linux@xxxxxxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx; kernel-janitors@xxxxxxxxxxxxxxx;
> Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>; platform-driver-
> x86@xxxxxxxxxxxxxxx
> Subject: [PATCH] platform/x86: hp-bioscfg: Fix some memory leaks in
> hp_populate_enumeration_elements_from_package()
> 
> CAUTION: External Email
> 
> In the loop in the ENUM_POSSIBLE_VALUES case, we allocate some memory
> that is never freed.
> 
> While at it, add some "str_value = NULL" to avoid some potential double
> free.
> 
> Fixes: 6b2770bfd6f9 ("platform/x86: hp-bioscfg: enum-attributes")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
> ---
> /!\ Speculative /!\
> 
>    This patch is based on analysis of the surrounding code and should be
>    reviewed with care !
> 
> /!\ Speculative /!\
> ---
>  drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c
> b/drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c
> index b1b241f0205a..dd173020c747 100644
> --- a/drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c
> +++ b/drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c
> @@ -224,6 +224,7 @@ static int
> hp_populate_enumeration_elements_from_package(union acpi_object
> *enum
>                                         sizeof(enum_data->common.prerequisites[reqs]));
> 
>                                 kfree(str_value);
> +                               str_value = NULL;
>                         }
>                         break;
> 
> @@ -275,6 +276,9 @@ static int
> hp_populate_enumeration_elements_from_package(union acpi_object
> *enum
>                                         strscpy(enum_data->possible_values[pos_values],
>                                                 str_value,
>                                                 sizeof(enum_data-
> >possible_values[pos_values]));
> +
> +                               kfree(str_value);
> +                               str_value = NULL;
>                         }
>                         break;
>                 default:
> @@ -283,6 +287,7 @@ static int
> hp_populate_enumeration_elements_from_package(union acpi_object
> *enum
>                 }
> 
>                 kfree(str_value);
> +               str_value = NULL;
>         }
> 
>  exit_enumeration_package:
> --
> 2.34.1





[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux