forked from Minki/linux
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> |
||
---|---|---|
.. | ||
asix_common.c | ||
asix_devices.c | ||
asix.h | ||
ax88172a.c | ||
ax88179_178a.c | ||
catc.c | ||
cdc_eem.c | ||
cdc_ether.c | ||
cdc_mbim.c | ||
cdc_ncm.c | ||
cdc_subset.c | ||
cdc-phonet.c | ||
ch9200.c | ||
cx82310_eth.c | ||
dm9601.c | ||
gl620a.c | ||
hso.c | ||
huawei_cdc_ncm.c | ||
int51x1.c | ||
ipheth.c | ||
kalmia.c | ||
kaweth.c | ||
Kconfig | ||
lan78xx.c | ||
lan78xx.h | ||
lg-vl600.c | ||
Makefile | ||
mcs7830.c | ||
net1080.c | ||
pegasus.c | ||
pegasus.h | ||
plusb.c | ||
qmi_wwan.c | ||
r8152.c | ||
rndis_host.c | ||
rtl8150.c | ||
sierra_net.c | ||
smsc75xx.c | ||
smsc75xx.h | ||
smsc95xx.c | ||
smsc95xx.h | ||
sr9700.c | ||
sr9700.h | ||
sr9800.c | ||
sr9800.h | ||
usbnet.c | ||
zaurus.c |