2022-01-07 03:35:43

by Jiasheng Jiang

[permalink] [raw]
Subject: [PATCH] ACPI: APD: Check for null pointer after calling devm_ioremap

As the possible failure of the devres_alloc(), the devm_ioremap() may
return NULL pointer.
And then, the 'clk_data->base' will be assigned to clkdev->data->base in
platform_device_register_data().
And the PTR_ERR_OR_ZERO() can not detect the 'base'.
Therefore, it should be better to add the check in order to guarantee
the success of the setup.

Fixes: 3f4ba94e3615 ("ACPI: APD: Add AMD misc clock handler support")
Signed-off-by: Jiasheng Jiang <[email protected]>
---
drivers/acpi/acpi_apd.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
index 6e02448d15d9..9db6409ecb47 100644
--- a/drivers/acpi/acpi_apd.c
+++ b/drivers/acpi/acpi_apd.c
@@ -95,6 +95,8 @@ static int fch_misc_setup(struct apd_private_data *pdata)
resource_size(rentry->res));
break;
}
+ if (!clk_data->base)
+ return -ENOMEM;

acpi_dev_free_resource_list(&resource_list);

--
2.25.1



2022-01-11 15:37:02

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI: APD: Check for null pointer after calling devm_ioremap

On Fri, Jan 7, 2022 at 4:35 AM Jiasheng Jiang <[email protected]> wrote:
>
> As the possible failure of the devres_alloc(), the devm_ioremap() may
> return NULL pointer.
> And then, the 'clk_data->base' will be assigned to clkdev->data->base in
> platform_device_register_data().
> And the PTR_ERR_OR_ZERO() can not detect the 'base'.
> Therefore, it should be better to add the check in order to guarantee
> the success of the setup.
>
> Fixes: 3f4ba94e3615 ("ACPI: APD: Add AMD misc clock handler support")
> Signed-off-by: Jiasheng Jiang <[email protected]>
> ---
> drivers/acpi/acpi_apd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
> index 6e02448d15d9..9db6409ecb47 100644
> --- a/drivers/acpi/acpi_apd.c
> +++ b/drivers/acpi/acpi_apd.c
> @@ -95,6 +95,8 @@ static int fch_misc_setup(struct apd_private_data *pdata)
> resource_size(rentry->res));
> break;
> }
> + if (!clk_data->base)
> + return -ENOMEM;
>
> acpi_dev_free_resource_list(&resource_list);
>
> --

Applied as 5.17-rc material with a rewritten changelog, thanks!