2019-03-18 23:33:54

by Aditya Pakki

[permalink] [raw]
Subject: [PATCH] pinctrl: berlin: Fix to avoid NULL pointer dereference

of_match_device can return a NULL value when the matching device is
not found. The patch avoids a potential dereference in such scenario.

Signed-off-by: Aditya Pakki <[email protected]>
---
drivers/pinctrl/berlin/berlin-bg4ct.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/pinctrl/berlin/berlin-bg4ct.c b/drivers/pinctrl/berlin/berlin-bg4ct.c
index 6a7fe929a68b..2d5e82938ef9 100644
--- a/drivers/pinctrl/berlin/berlin-bg4ct.c
+++ b/drivers/pinctrl/berlin/berlin-bg4ct.c
@@ -456,6 +456,9 @@ static int berlin4ct_pinctrl_probe(struct platform_device *pdev)
struct resource *res;
void __iomem *base;

+ if (!match)
+ return -ENODEV;
+
rmconfig = devm_kzalloc(&pdev->dev, sizeof(*rmconfig), GFP_KERNEL);
if (!rmconfig)
return -ENOMEM;
--
2.17.1



2019-03-19 05:30:15

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] pinctrl: berlin: Fix to avoid NULL pointer dereference

On Mon, 18 Mar 2019 18:31:29 -0500 Aditya Pakki wrote:
>
>
> of_match_device can return a NULL value when the matching device is

This could not happen. If the probe is called, it means OF registered a
device with a valid compatible string, so match cannot be NULL.

> not found. The patch avoids a potential dereference in such scenario.
>
> Signed-off-by: Aditya Pakki <[email protected]>
> ---
> drivers/pinctrl/berlin/berlin-bg4ct.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/pinctrl/berlin/berlin-bg4ct.c b/drivers/pinctrl/berlin/berlin-bg4ct.c
> index 6a7fe929a68b..2d5e82938ef9 100644
> --- a/drivers/pinctrl/berlin/berlin-bg4ct.c
> +++ b/drivers/pinctrl/berlin/berlin-bg4ct.c
> @@ -456,6 +456,9 @@ static int berlin4ct_pinctrl_probe(struct platform_device *pdev)
> struct resource *res;
> void __iomem *base;
>
> + if (!match)
> + return -ENODEV;
> +
> rmconfig = devm_kzalloc(&pdev->dev, sizeof(*rmconfig), GFP_KERNEL);
> if (!rmconfig)
> return -ENOMEM;
> --
> 2.17.1
>