|
|
@@ -186,11 +186,12 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
|
|
|
out = dev->port_usb->out_ep;
|
|
|
else
|
|
|
out = NULL;
|
|
|
- spin_unlock_irqrestore(&dev->lock, flags);
|
|
|
|
|
|
if (!out)
|
|
|
+ {
|
|
|
+ spin_unlock_irqrestore(&dev->lock, flags);
|
|
|
return -ENOTCONN;
|
|
|
-
|
|
|
+ }
|
|
|
|
|
|
/* Padding up to RX_EXTRA handles minor disagreements with host.
|
|
|
* Normally we use the USB "terminate on short read" convention;
|
|
|
@@ -214,6 +215,7 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
|
|
|
|
|
|
if (dev->port_usb->is_fixed)
|
|
|
size = max_t(size_t, size, dev->port_usb->fixed_out_len);
|
|
|
+ spin_unlock_irqrestore(&dev->lock, flags);
|
|
|
|
|
|
skb = __netdev_alloc_skb(dev->net, size + NET_IP_ALIGN, gfp_flags);
|
|
|
if (skb == NULL) {
|