diff options
Diffstat (limited to 'drivers/net/mctp/mctp-usb.c')
| -rw-r--r-- | drivers/net/mctp/mctp-usb.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/mctp/mctp-usb.c b/drivers/net/mctp/mctp-usb.c index 36ccc53b1797..ef860cfc629f 100644 --- a/drivers/net/mctp/mctp-usb.c +++ b/drivers/net/mctp/mctp-usb.c @@ -96,11 +96,13 @@ static netdev_tx_t mctp_usb_start_xmit(struct sk_buff *skb,  			  skb->data, skb->len,  			  mctp_usb_out_complete, skb); +	/* Stops TX queue first to prevent race condition with URB complete */ +	netif_stop_queue(dev);  	rc = usb_submit_urb(urb, GFP_ATOMIC); -	if (rc) +	if (rc) { +		netif_wake_queue(dev);  		goto err_drop; -	else -		netif_stop_queue(dev); +	}  	return NETDEV_TX_OK;  | 
