From 727bbb313925defc931ab8869dc3148cd8c196c6 Mon Sep 17 00:00:00 2001 From: Mayank Rana Date: Mon, 1 Aug 2022 15:23:01 -0700 Subject: [PATCH] dwc3-msm-core: Add NULL check with dwc3_msm_override_pm_ops() API dwc3 msm core driver shall start USB host or device mode with dwc3 controller driver. This shall fail specifically USB host mode due to any error with xhci controller initialization. In this case HCD would be unbinded causing NULL pointer deference when trying to override its PM ops with dwc3_msm_override_pm_ops() API. To avoid NULL pointer dereference add NULL check with dwc3_msm_override_pm_ops() API. Change-Id: Ia96e945d58b1bf1d5434b004ac3d3090b24c6208 Signed-off-by: Mayank Rana --- drivers/usb/dwc3/dwc3-msm-core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/usb/dwc3/dwc3-msm-core.c b/drivers/usb/dwc3/dwc3-msm-core.c index b2a28143984b..1380b8eb1b3c 100644 --- a/drivers/usb/dwc3/dwc3-msm-core.c +++ b/drivers/usb/dwc3/dwc3-msm-core.c @@ -5329,6 +5329,11 @@ static void dwc3_core_complete(struct device *dev); static void dwc3_msm_override_pm_ops(struct device *dev, struct dev_pm_ops *pm_ops, bool is_host) { + if (!dev->driver || !dev->driver->pm) { + dev_err(dev, "can't override PM OPs\n"); + return; + } + (*pm_ops) = (*dev->driver->pm); pm_ops->prepare = is_host ? dwc3_host_prepare : dwc3_core_prepare; pm_ops->complete = is_host ? dwc3_host_complete : dwc3_core_complete;