Re: [PATCH 2/7] irqchip/irq-imgpdc.c: Use devm_platform_ioremap_resource()

From: Marc Zyngier
Date: Mon Apr 29 2019 - 04:13:59 EST


On 04/04/2019 08:20, Mukesh Ojha wrote:
> devm_platform_ioremap_resource() internally have platform_get_resource()
> and devm_ioremap_resource() in it. So instead of calling them separately
> use devm_platform_ioremap_resource() directly.
>
> Signed-off-by: Mukesh Ojha <mojha@xxxxxxxxxxxxxx>
> ---
> drivers/irqchip/irq-imgpdc.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/drivers/irqchip/irq-imgpdc.c b/drivers/irqchip/irq-imgpdc.c
> index d00489a..8904a5f 100644
> --- a/drivers/irqchip/irq-imgpdc.c
> +++ b/drivers/irqchip/irq-imgpdc.c
> @@ -307,13 +307,6 @@ static int pdc_intc_probe(struct platform_device *pdev)
> if (!node)
> return -ENOENT;
>
> - /* Get registers */
> - res_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - if (res_regs == NULL) {
> - dev_err(&pdev->dev, "cannot find registers resource\n");
> - return -ENOENT;
> - }
> -
> /* Allocate driver data */
> priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
> if (!priv) {
> @@ -324,8 +317,7 @@ static int pdc_intc_probe(struct platform_device *pdev)
> platform_set_drvdata(pdev, priv);
>
> /* Ioremap the registers */
> - priv->pdc_base = devm_ioremap(&pdev->dev, res_regs->start,
> - resource_size(res_regs));
> + priv->pdc_base = devm_platform_ioremap_resource(pdev, 0);
> if (!priv->pdc_base)
> return -EIO;
>
>

What happens to the res_regs variable then?

Also, and more importantly, devm_platform_ioremap_resource doesn't
return NULL on error, but an ERR_PTR. Yes, the bug was already there,
but since you're changing it, you might as well fix the thing.

Thanks,

M.
--
Jazz is not dead. It just smells funny...