Message ID | 1485751903-29284-1-git-send-email-shailendra.v@samsung.com |
---|---|
State | New |
Headers | show |
Hello, On Mon, 30 Jan 2017 10:21:43 +0530, Shailendra Verma wrote: > of_match_device could return NULL, and so can cause a NULL > pointer dereference later. > > Signed-off-by: Shailendra Verma <shailendra.v@samsung.com> In practice, I don't see how of_match_device() can return NULL here. Indeed, those drivers only support Device Tree based probing, so of_match_device() will always return a non-NULL value. Thomas
On Mon, Jan 30, 2017 at 9:24 AM, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote: > On Mon, 30 Jan 2017 10:21:43 +0530, Shailendra Verma wrote: >> of_match_device could return NULL, and so can cause a NULL >> pointer dereference later. >> >> Signed-off-by: Shailendra Verma <shailendra.v@samsung.com> > > In practice, I don't see how of_match_device() can return NULL here. > Indeed, those drivers only support Device Tree based probing, so > of_match_device() will always return a non-NULL value. OK you're right, this is too overly cautious. Saliendra, sorry but I have to drop these patches. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pinctrl/mvebu/pinctrl-dove.c b/drivers/pinctrl/mvebu/pinctrl-dove.c index f93ae0d..f9fe6d4 100644 --- a/drivers/pinctrl/mvebu/pinctrl-dove.c +++ b/drivers/pinctrl/mvebu/pinctrl-dove.c @@ -769,6 +769,10 @@ static int dove_pinctrl_probe(struct platform_device *pdev) struct resource fb_res; const struct of_device_id *match = of_match_device(dove_pinctrl_of_match, &pdev->dev); + if (!match) { + dev_err(&pdev->dev, "Error: No device match found\n"); + return -ENODEV; + } pdev->dev.platform_data = (void *)match->data; /* diff --git a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c index 5f89c26..75efb83 100644 --- a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c +++ b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c @@ -472,6 +472,10 @@ static int kirkwood_pinctrl_probe(struct platform_device *pdev) struct resource *res; const struct of_device_id *match = of_match_device(kirkwood_pinctrl_of_match, &pdev->dev); + if (!match) { + dev_err(&pdev->dev, "Error: No device match found\n"); + return -ENODEV; + } pdev->dev.platform_data = (void *)match->data; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); diff --git a/drivers/pinctrl/mvebu/pinctrl-orion.c b/drivers/pinctrl/mvebu/pinctrl-orion.c index 84e1441..559ac32 100644 --- a/drivers/pinctrl/mvebu/pinctrl-orion.c +++ b/drivers/pinctrl/mvebu/pinctrl-orion.c @@ -225,6 +225,10 @@ static int orion_pinctrl_probe(struct platform_device *pdev) of_match_device(orion_pinctrl_of_match, &pdev->dev); struct resource *res; + if (!match) { + dev_err(&pdev->dev, "Error: No device match found\n"); + return -ENODEV; + } pdev->dev.platform_data = (void*)match->data; res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
of_match_device could return NULL, and so can cause a NULL pointer dereference later. Signed-off-by: Shailendra Verma <shailendra.v@samsung.com> --- drivers/pinctrl/mvebu/pinctrl-dove.c | 4 ++++ drivers/pinctrl/mvebu/pinctrl-kirkwood.c | 4 ++++ drivers/pinctrl/mvebu/pinctrl-orion.c | 4 ++++ 3 files changed, 12 insertions(+)