projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
df2cf4a
)
net/xen-netfront: only napi_synchronize() if running
author
Chas Williams
<3chas3@gmail.com>
Thu, 27 Aug 2015 16:28:46 +0000
(12:28 -0400)
committer
David S. Miller
<davem@davemloft.net>
Fri, 28 Aug 2015 20:29:19 +0000
(13:29 -0700)
If an interface isn't running napi_synchronize() will hang forever.
[ 392.248403] rmmod R running task 0 359 343 0x00000000
[ 392.257671]
ffff88003760fc88
ffff880037193b40
ffff880037193160
ffff88003760fc88
[ 392.267644]
ffff880037610000
ffff88003760fcd8
0000000100014c22
ffffffff81f75c40
[ 392.277524]
0000000000bc7010
ffff88003760fca8
ffffffff81796927
ffffffff81f75c40
[ 392.287323] Call Trace:
[ 392.291599] [<
ffffffff81796927
>] schedule+0x37/0x90
[ 392.298553] [<
ffffffff8179985b
>] schedule_timeout+0x14b/0x280
[ 392.306421] [<
ffffffff810f91b9
>] ? irq_free_descs+0x69/0x80
[ 392.314006] [<
ffffffff811084d0
>] ? internal_add_timer+0xb0/0xb0
[ 392.322125] [<
ffffffff81109d07
>] msleep+0x37/0x50
[ 392.329037] [<
ffffffffa00ec79a
>] xennet_disconnect_backend.isra.24+0xda/0x390 [xen_netfront]
[ 392.339658] [<
ffffffffa00ecadc
>] xennet_remove+0x2c/0x80 [xen_netfront]
[ 392.348516] [<
ffffffff81481c69
>] xenbus_dev_remove+0x59/0xc0
[ 392.356257] [<
ffffffff814e7217
>] __device_release_driver+0x87/0x120
[ 392.364645] [<
ffffffff814e7cf8
>] driver_detach+0xb8/0xc0
[ 392.371989] [<
ffffffff814e6e69
>] bus_remove_driver+0x59/0xe0
[ 392.379883] [<
ffffffff814e84f0
>] driver_unregister+0x30/0x70
[ 392.387495] [<
ffffffff814814b2
>] xenbus_unregister_driver+0x12/0x20
[ 392.395908] [<
ffffffffa00ed89b
>] netif_exit+0x10/0x775 [xen_netfront]
[ 392.404877] [<
ffffffff81124e08
>] SyS_delete_module+0x1d8/0x230
[ 392.412804] [<
ffffffff8179a8ee
>] system_call_fastpath+0x12/0x71
Signed-off-by: Chas Williams <3chas3@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netfront.c
patch
|
blob
|
history
diff --git
a/drivers/net/xen-netfront.c
b/drivers/net/xen-netfront.c
index 002062db2f1dc791b73a1a98c5a4368dfe756179..e27e6d2ea6d283cc3508579b38e8fb27b8ade035 100644
(file)
--- a/
drivers/net/xen-netfront.c
+++ b/
drivers/net/xen-netfront.c
@@
-1348,7
+1348,8
@@
static void xennet_disconnect_backend(struct netfront_info *info)
queue->tx_evtchn = queue->rx_evtchn = 0;
queue->tx_irq = queue->rx_irq = 0;
- napi_synchronize(&queue->napi);
+ if (netif_running(info->netdev))
+ napi_synchronize(&queue->napi);
xennet_release_tx_bufs(queue);
xennet_release_rx_bufs(queue);