MLK-11896-3 usb: chipidea: imx: add NULL check for usbmisc_data
authorLi Jun <jun.li@freescale.com>
Thu, 26 Nov 2015 09:35:13 +0000 (17:35 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:49:16 +0000 (14:49 -0500)
Check if data->usbmisc_data is NULL before dereference it in probe.

Acked-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Li Jun <jun.li@freescale.com>
drivers/usb/chipidea/ci_hdrc_imx.c

index 060c8e0..d99afc3 100644 (file)
@@ -527,7 +527,8 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
        if (pdata.flags & CI_HDRC_SUPPORTS_RUNTIME_PM)
                data->supports_runtime_pm = true;
 
-       if (data->usbmisc_data->index > 1 && (imx_has_hsic_con(data))) {
+       if (data->usbmisc_data && data->usbmisc_data->index > 1
+           && (imx_has_hsic_con(data))) {
                pdata.flags |= CI_HDRC_IMX_IS_HSIC;
                data->hsic_pad_regulator = devm_regulator_get(&pdev->dev,
                                                                        "pad");
@@ -555,7 +556,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
                }
        }
 
-       if (of_find_property(np, "fsl,anatop", NULL)) {
+       if (of_find_property(np, "fsl,anatop", NULL) && data->usbmisc_data) {
                data->anatop = syscon_regmap_lookup_by_phandle(np,
                                                        "fsl,anatop");
                if (IS_ERR(data->anatop)) {
@@ -564,11 +565,11 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
                        ret = PTR_ERR(data->anatop);
                        goto disable_hsic_regulator;
                }
-               if (data->usbmisc_data)
-                       data->usbmisc_data->anatop = data->anatop;
+               data->usbmisc_data->anatop = data->anatop;
        }
 
-       if (of_find_property(np, "imx-usb-charger-detection", NULL)) {
+       if (of_find_property(np, "imx-usb-charger-detection", NULL) &&
+                                                       data->usbmisc_data) {
                data->imx_usb_charger_detection = true;
                data->charger.dev = &pdev->dev;
                data->usbmisc_data->charger = &data->charger;
@@ -611,7 +612,8 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
        }
 
        /* usbmisc needs to know dr mode to choose wakeup setting */
-       data->usbmisc_data->available_role =
+       if (data->usbmisc_data)
+               data->usbmisc_data->available_role =
                        ci_hdrc_query_available_role(data->ci_pdev);
 
        if (data->supports_runtime_pm) {