diff options
author | Sven Van Asbroeck <thesven73@gmail.com> | 2019-02-11 10:04:26 -0500 |
---|---|---|
committer | Felipe Balbi <felipe.balbi@linux.intel.com> | 2019-02-13 13:05:35 +0200 |
commit | 5895d311d28f2605e2f71c1a3e043ed38f3ac9d2 (patch) | |
tree | 9e115001cee073a4e31be09593903d691e594a36 /drivers/usb | |
parent | 0d1ec194721f844a6b20f7f4854332adcebc6fb9 (diff) | |
download | linux-stable-5895d311d28f2605e2f71c1a3e043ed38f3ac9d2.tar.gz linux-stable-5895d311d28f2605e2f71c1a3e043ed38f3ac9d2.tar.bz2 linux-stable-5895d311d28f2605e2f71c1a3e043ed38f3ac9d2.zip |
usb: phy: twl6030-usb: fix possible use-after-free on remove
In remove(), use cancel_delayed_work_sync() to cancel the
delayed work. Otherwise there's a chance that this work
will continue to run until after the device has been removed.
This issue was detected with the help of Coccinelle.
Cc: Tony Lindgren <tony@atomide.com>
Cc: Bin Liu <b-liu@ti.com>
Fixes: b6a619a883c3 ("usb: phy: Check initial state for twl6030")
Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/phy/phy-twl6030-usb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/phy/phy-twl6030-usb.c b/drivers/usb/phy/phy-twl6030-usb.c index 183550b63faa..dade34d70419 100644 --- a/drivers/usb/phy/phy-twl6030-usb.c +++ b/drivers/usb/phy/phy-twl6030-usb.c @@ -400,7 +400,7 @@ static int twl6030_usb_remove(struct platform_device *pdev) { struct twl6030_usb *twl = platform_get_drvdata(pdev); - cancel_delayed_work(&twl->get_status_work); + cancel_delayed_work_sync(&twl->get_status_work); twl6030_interrupt_mask(TWL6030_USBOTG_INT_MASK, REG_INT_MSK_LINE_C); twl6030_interrupt_mask(TWL6030_USBOTG_INT_MASK, |