Messages in this thread Patch in this message | | | From | Shailendra Verma <> | Subject | [PATCH] Net: ethernet: freescale - Fix possible NULL derefrence. | Date | Fri, 27 Jan 2017 16:43:14 +0530 |
| |
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/net/ethernet/freescale/fsl_pq_mdio.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fsl_pq_mdio.c b/drivers/net/ethernet/freescale/fsl_pq_mdio.c index 446c7b3..79393fe 100644 --- a/drivers/net/ethernet/freescale/fsl_pq_mdio.c +++ b/drivers/net/ethernet/freescale/fsl_pq_mdio.c @@ -379,9 +379,8 @@ static void ucc_configure(phys_addr_t start, phys_addr_t end) static int fsl_pq_mdio_probe(struct platform_device *pdev) { - const struct of_device_id *id = - of_match_device(fsl_pq_mdio_match, &pdev->dev); - const struct fsl_pq_mdio_data *data = id->data; + const struct of_device_id *id; + const struct fsl_pq_mdio_data *data; struct device_node *np = pdev->dev.of_node; struct resource res; struct device_node *tbi; @@ -389,6 +388,14 @@ static int fsl_pq_mdio_probe(struct platform_device *pdev) struct mii_bus *new_bus; int err; + id = of_match_device(fsl_pq_mdio_match, &pdev->dev); + if (!id) { + dev_err(&pdev->dev, "Error: No device match found\n"); + return -ENODEV; + } + + data = id->data; + dev_dbg(&pdev->dev, "found %s compatible node\n", id->compatible); new_bus = mdiobus_alloc_size(sizeof(*priv)); -- 1.7.9.5
| |