diff options
author | Li Jun <jun.li@freescale.com> | 2015-11-26 17:35:13 +0800 |
---|---|---|
committer | Octavian Purdila <octavian.purdila@nxp.com> | 2017-02-23 14:21:42 +0200 |
commit | ba044bcd8656af5035fbf7d6ec593523b3b397a7 (patch) | |
tree | d82852aa7229c2a342b43ffbe1ea648d3dabd406 /drivers/usb/chipidea/ci_hdrc_imx.c | |
parent | 9322514c14effbec5ac99a29900fe812b42457f1 (diff) |
MLK-11896-3 usb: chipidea: imx: add NULL check for usbmisc_data
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>
Diffstat (limited to 'drivers/usb/chipidea/ci_hdrc_imx.c')
-rw-r--r-- | drivers/usb/chipidea/ci_hdrc_imx.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index 060c8e0abb10..d99afc3a0692 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -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) { |