summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jun <jun.li@freescale.com>2015-11-26 17:35:13 +0800
committerOctavian Purdila <octavian.purdila@nxp.com>2017-02-23 14:21:42 +0200
commitba044bcd8656af5035fbf7d6ec593523b3b397a7 (patch)
treed82852aa7229c2a342b43ffbe1ea648d3dabd406
parent9322514c14effbec5ac99a29900fe812b42457f1 (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>
-rw-r--r--drivers/usb/chipidea/ci_hdrc_imx.c14
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) {