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

Jiasheng Jiang posted 1 patch 4 years, 5 months ago
drivers/acpi/acpi_apd.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] ACPI: APD: Check for null pointer after calling devm_ioremap
Posted by Jiasheng Jiang 4 years, 5 months ago
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 <jiasheng@iscas.ac.cn>
---
 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

Re: [PATCH] ACPI: APD: Check for null pointer after calling devm_ioremap
Posted by Rafael J. Wysocki 4 years, 5 months ago
On Fri, Jan 7, 2022 at 4:35 AM Jiasheng Jiang <jiasheng@iscas.ac.cn> 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 <jiasheng@iscas.ac.cn>
> ---
>  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!