| From 4cfc979e4377cfcb24552095e7bf420f94b5aedd Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 3 Aug 2020 10:07:31 +0300 |
| Subject: fsl/fman: fix dereference null return value |
| |
| From: Florinel Iordache <florinel.iordache@nxp.com> |
| |
| [ Upstream commit 0572054617f32670abab4b4e89a876954d54b704 ] |
| |
| Check before using returned value to avoid dereferencing null pointer. |
| |
| Fixes: 18a6c85fcc78 ("fsl/fman: Add FMan Port Support") |
| Signed-off-by: Florinel Iordache <florinel.iordache@nxp.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/freescale/fman/fman_port.c | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/freescale/fman/fman_port.c b/drivers/net/ethernet/freescale/fman/fman_port.c |
| index 87b26f063cc82..c27df153f8959 100644 |
| --- a/drivers/net/ethernet/freescale/fman/fman_port.c |
| +++ b/drivers/net/ethernet/freescale/fman/fman_port.c |
| @@ -1767,6 +1767,7 @@ static int fman_port_probe(struct platform_device *of_dev) |
| struct fman_port *port; |
| struct fman *fman; |
| struct device_node *fm_node, *port_node; |
| + struct platform_device *fm_pdev; |
| struct resource res; |
| struct resource *dev_res; |
| u32 val; |
| @@ -1791,8 +1792,14 @@ static int fman_port_probe(struct platform_device *of_dev) |
| goto return_err; |
| } |
| |
| - fman = dev_get_drvdata(&of_find_device_by_node(fm_node)->dev); |
| + fm_pdev = of_find_device_by_node(fm_node); |
| of_node_put(fm_node); |
| + if (!fm_pdev) { |
| + err = -EINVAL; |
| + goto return_err; |
| + } |
| + |
| + fman = dev_get_drvdata(&fm_pdev->dev); |
| if (!fman) { |
| err = -EINVAL; |
| goto return_err; |
| -- |
| 2.25.1 |
| |