usb: dwc3: of-simple: fix use-after-free on remove
authorJohan Hovold <johan@kernel.org>
Thu, 31 May 2018 14:45:52 +0000 (16:45 +0200)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 18 Jun 2018 09:41:00 +0000 (12:41 +0300)
The clocks have already been explicitly disabled and put as part of
remove() so the runtime suspend callback must not be run when balancing
the runtime PM usage count before returning.

Fixes: 16adc674d0d6 ("usb: dwc3: add generic OF glue layer")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc3/dwc3-of-simple.c

index 6b3ccd5..dbeff5e 100644 (file)
@@ -165,8 +165,9 @@ static int dwc3_of_simple_remove(struct platform_device *pdev)
 
        reset_control_put(simple->resets);
 
-       pm_runtime_put_sync(dev);
        pm_runtime_disable(dev);
+       pm_runtime_put_noidle(dev);
+       pm_runtime_set_suspended(dev);
 
        return 0;
 }