mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-11 08:54:28 -05:00
40 lines
1.2 KiB
Diff
40 lines
1.2 KiB
Diff
From 1666984c8625b3db19a9abc298931d35ab7bc64b Mon Sep 17 00:00:00 2001
|
|
From: Oliver Neukum <oneukum@suse.com>
|
|
Date: Mon, 7 Mar 2016 11:31:10 +0100
|
|
Subject: usbnet: cleanup after bind() in probe()
|
|
|
|
In case bind() works, but a later error forces bailing
|
|
in probe() in error cases work and a timer may be scheduled.
|
|
They must be killed. This fixes an error case related to
|
|
the double free reported in
|
|
http://www.spinics.net/lists/netdev/msg367669.html
|
|
and needs to go on top of Linus' fix to cdc-ncm.
|
|
|
|
Signed-off-by: Oliver Neukum <ONeukum@suse.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/usb/usbnet.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
|
|
index 0b0ba7e..1079812 100644
|
|
--- a/drivers/net/usb/usbnet.c
|
|
+++ b/drivers/net/usb/usbnet.c
|
|
@@ -1769,6 +1769,13 @@ out3:
|
|
if (info->unbind)
|
|
info->unbind (dev, udev);
|
|
out1:
|
|
+ /* subdrivers must undo all they did in bind() if they
|
|
+ * fail it, but we may fail later and a deferred kevent
|
|
+ * may trigger an error resubmitting itself and, worse,
|
|
+ * schedule a timer. So we kill it all just in case.
|
|
+ */
|
|
+ cancel_work_sync(&dev->kevent);
|
|
+ del_timer_sync(&dev->delay);
|
|
free_netdev(net);
|
|
out:
|
|
return status;
|
|
--
|
|
cgit v1.1
|
|
|