2021-10-15 13:25:09

by zhaoxiao

[permalink] [raw]
Subject: [PATCH] irqchip/loongson-htvec:- Handle return value of ioremap.

From: zhaoxiao <[email protected]>

Here, If ioremap will fail. It will return NULL.Kernel can run into
a NULL-pointer dereference. This error check will avoid NULL pointer
dereference.

Signed-off-by: zhaoxiao <[email protected]>
---
drivers/irqchip/irq-loongson-htvec.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/irqchip/irq-loongson-htvec.c b/drivers/irqchip/irq-loongson-htvec.c
index 1cc0bceb4472..a36c20f44ec4 100644
--- a/drivers/irqchip/irq-loongson-htvec.c
+++ b/drivers/irqchip/irq-loongson-htvec.c
@@ -267,6 +267,8 @@ struct fwnode_handle *htvec_acpi_init(struct fwnode_handle *parent,

priv->num_parents = HTVEC_MAX_PARENT_IRQ;
priv->base = ioremap(acpi_htvec->address, acpi_htvec->size);
+ if (!priv->base)
+ goto free_priv;

/* Interrupt may come from any of the 8 interrupt lines */
for (i = 0; i < priv->num_parents; i++)
@@ -307,6 +309,7 @@ struct fwnode_handle *htvec_acpi_init(struct fwnode_handle *parent,
iounmap_base:
iounmap(priv->base);
priv->domain_handle = NULL;
+free_priv:
kfree(priv);

return NULL;
--
2.20.1


2021-10-15 17:43:43

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH] irqchip/loongson-htvec:- Handle return value of ioremap.

On 2021-10-15 08:25, zhaoxiao wrote:
> From: zhaoxiao <[email protected]>
>
> Here, If ioremap will fail. It will return NULL.Kernel can run into
> a NULL-pointer dereference. This error check will avoid NULL pointer
> dereference.
>
> Signed-off-by: zhaoxiao <[email protected]>
> ---
> drivers/irqchip/irq-loongson-htvec.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/irqchip/irq-loongson-htvec.c
> b/drivers/irqchip/irq-loongson-htvec.c
> index 1cc0bceb4472..a36c20f44ec4 100644
> --- a/drivers/irqchip/irq-loongson-htvec.c
> +++ b/drivers/irqchip/irq-loongson-htvec.c
> @@ -267,6 +267,8 @@ struct fwnode_handle *htvec_acpi_init(struct
> fwnode_handle *parent,
>
> priv->num_parents = HTVEC_MAX_PARENT_IRQ;
> priv->base = ioremap(acpi_htvec->address, acpi_htvec->size);
> + if (!priv->base)
> + goto free_priv;
>
> /* Interrupt may come from any of the 8 interrupt lines */
> for (i = 0; i < priv->num_parents; i++)
> @@ -307,6 +309,7 @@ struct fwnode_handle *htvec_acpi_init(struct
> fwnode_handle *parent,
> iounmap_base:
> iounmap(priv->base);
> priv->domain_handle = NULL;
> +free_priv:
> kfree(priv);
>
> return NULL;

What is the difference between this and the patch you sent 3 days ago?

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

2021-10-21 09:28:12

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH] irqchip/loongson-htvec:- Handle return value of ioremap.

On Fri, 15 Oct 2021 08:25:23 +0100,
zhaoxiao <[email protected]> wrote:
>
> From: zhaoxiao <[email protected]>
>
> Here, If ioremap will fail. It will return NULL.Kernel can run into
> a NULL-pointer dereference. This error check will avoid NULL pointer
> dereference.
>
> Signed-off-by: zhaoxiao <[email protected]>
> ---
> drivers/irqchip/irq-loongson-htvec.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/irqchip/irq-loongson-htvec.c b/drivers/irqchip/irq-loongson-htvec.c
> index 1cc0bceb4472..a36c20f44ec4 100644
> --- a/drivers/irqchip/irq-loongson-htvec.c
> +++ b/drivers/irqchip/irq-loongson-htvec.c
> @@ -267,6 +267,8 @@ struct fwnode_handle *htvec_acpi_init(struct fwnode_handle *parent,
>
> priv->num_parents = HTVEC_MAX_PARENT_IRQ;
> priv->base = ioremap(acpi_htvec->address, acpi_htvec->size);
> + if (!priv->base)
> + goto free_priv;
>
> /* Interrupt may come from any of the 8 interrupt lines */
> for (i = 0; i < priv->num_parents; i++)
> @@ -307,6 +309,7 @@ struct fwnode_handle *htvec_acpi_init(struct fwnode_handle *parent,
> iounmap_base:
> iounmap(priv->base);
> priv->domain_handle = NULL;
> +free_priv:
> kfree(priv);
>
> return NULL;

I have no idea what code base this patch is against, but certainly not
any upstream kernel. There is no trace of any ACPI support in this
driver.

Please only send patches that make sense for upstream.

M.

--
Without deviation from the norm, progress is not possible.