| From foo@baz Wed Aug 22 09:42:09 CEST 2018 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Thu, 31 May 2018 16:45:52 +0200 |
| Subject: usb: dwc3: of-simple: fix use-after-free on remove |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| [ Upstream commit 896e518883f18e601335908192e33426c1f599a4 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/usb/dwc3/dwc3-of-simple.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/usb/dwc3/dwc3-of-simple.c |
| +++ b/drivers/usb/dwc3/dwc3-of-simple.c |
| @@ -132,8 +132,9 @@ static int dwc3_of_simple_remove(struct |
| |
| of_platform_depopulate(dev); |
| |
| - pm_runtime_put_sync(dev); |
| pm_runtime_disable(dev); |
| + pm_runtime_put_noidle(dev); |
| + pm_runtime_set_suspended(dev); |
| |
| return 0; |
| } |