linux-uconsole/drivers/net/usb
Jiri Slaby 73852461f8 r8152: napi hangup fix after disconnect
[ Upstream commit 0ee1f47349 ]

When unplugging an r8152 adapter while the interface is UP, the NIC
becomes unusable.  usb->disconnect (aka rtl8152_disconnect) deletes
napi. Then, rtl8152_disconnect calls unregister_netdev and that invokes
netdev->ndo_stop (aka rtl8152_close). rtl8152_close tries to
napi_disable, but the napi is already deleted by disconnect above. So
the first while loop in napi_disable never finishes. This results in
complete deadlock of the network layer as there is rtnl_mutex held by
unregister_netdev.

So avoid the call to napi_disable in rtl8152_close when the device is
already gone.

The other calls to usb_kill_urb, cancel_delayed_work_sync,
netif_stop_queue etc. seem to be fine. The urb and netdev is not
destroyed yet.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: linux-usb@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-07-22 14:25:53 +02:00
..
asix.h asix: Rename remaining and size for clarity 2015-10-05 06:58:38 -07:00
asix_common.c asix: Fix offset calculation in asix_rx_fixup() causing slow transmissions 2016-06-01 12:15:49 -07:00
asix_devices.c net: asix: add support for the Billionton GUSB2AM-1G-B USB adapter 2015-10-18 19:36:04 -07:00
ax88172a.c
ax88179_178a.c
catc.c catc: Use heap buffer for memory size test 2017-04-21 09:30:08 +02:00
cdc-phonet.c cdc-phonet: use common parser 2015-09-15 12:43:49 -07:00
cdc_eem.c
cdc_ether.c r8152: add Linksys USB3GIGV1 id 2018-04-29 07:50:01 +02:00
cdc_mbim.c net: usb: cdc_mbim: add flag FLAG_SEND_ZLP 2018-06-13 16:15:28 +02:00
cdc_ncm.c cdc_ncm: avoid padding beyond end of skb 2018-07-03 11:21:35 +02:00
cdc_subset.c
ch9200.c ch9200: Convert to use module_usb_driver 2015-09-22 17:34:57 -07:00
cx82310_eth.c cx82310_eth: use skb_cow_head() to deal with cloned skbs 2018-01-17 09:35:28 +01:00
dm9601.c drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
gl620a.c
hso.c
huawei_cdc_ncm.c cdc_ncm: Set NTB format again after altsetting switch for Huawei devices 2017-11-15 17:13:11 +01:00
int51x1.c
ipheth.c
kalmia.c
kaweth.c kaweth: fix oops upon failed memory allocation 2017-08-06 19:19:42 -07:00
Kconfig USB: cdc_subset: only build when one driver is enabled 2018-02-25 11:03:47 +01:00
lan78xx.c lan78xx: Correctly indicate invalid OTP 2018-04-24 09:32:04 +02:00
lan78xx.h lan78xx: Remove not defined MAC_CR_GMII_EN_ bit from MAC_CR. 2015-09-17 22:15:37 -07:00
lg-vl600.c
Makefile USB: cdc_subset: only build when one driver is enabled 2018-02-25 11:03:47 +01:00
mcs7830.c drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
net1080.c
pegasus.c pegasus: Use heap buffers for all register access 2017-04-21 09:30:07 +02:00
pegasus.h
plusb.c usb: plusb: Add support for PL-27A1 2017-10-08 10:14:19 +02:00
qmi_wwan.c net: qmi_wwan: Add Netgear Aircard 779S 2018-07-03 11:21:24 +02:00
r8152.c r8152: napi hangup fix after disconnect 2018-07-22 14:25:53 +02:00
rndis_host.c
rtl8150.c rtl8150: Use heap buffers for all register access 2017-04-21 09:30:07 +02:00
sierra_net.c sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications 2017-06-17 06:39:36 +02:00
smsc75xx.c smsc75xx: fix smsc75xx_set_features() 2018-05-30 07:49:00 +02:00
smsc75xx.h
smsc95xx.c usbnet: remove invalid check 2015-09-22 16:14:32 -07:00
smsc95xx.h
sr9700.c sr9700: use skb_cow_head() to deal with cloned skbs 2018-01-17 09:35:28 +01:00
sr9700.h
sr9800.c drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
sr9800.h
usbnet.c USB: core: harden cdc_parse_cdc_header 2017-10-12 11:27:33 +02:00
zaurus.c