usb: gadget: u_ether: synchronize with transmit when stopping queue
authorJeff Westfahl <jeff.westfahl@ni.com>
Thu, 29 May 2014 06:49:41 +0000 (09:49 +0300)
committerFelipe Balbi <balbi@ti.com>
Thu, 19 Jun 2014 15:06:46 +0000 (10:06 -0500)
commita9232076374334ca2bc2a448dfde96d38a54349a
treefc5be5559891d8aaf0b4bfeb8fc395f63456162d
parent02dae36aa649a66c5c6181157ddd806e7b4913fc
usb: gadget: u_ether: synchronize with transmit when stopping queue

When disconnecting, it's possible that another thread has already made it
into eth_start_xmit before we call netif_stop_queue. This can lead to a
crash as eth_start_xmit tries to use resources that gether_disconnect is
freeing. Use netif_tx_lock/unlock around netif_stop_queue to ensure no
threads are executing during the remainder of gether_disconnect.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Tested-by: Jaeden Amero <jaeden.amero@ni.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/u_ether.c