summaryrefslogtreecommitdiffstats
path: root/drivers/staging/vt6656/usbpipe.c
diff options
context:
space:
mode:
authorMalcolm Priestley2014-07-05 20:24:26 +0200
committerGreg Kroah-Hartman2014-07-09 01:03:57 +0200
commitf5283274ccf531a7bb9231c777352f4852e2ded1 (patch)
tree9c3c16ee5dddc126fa810deb35ab2b1a2d5be612 /drivers/staging/vt6656/usbpipe.c
parentstaging: vt6656: vnt_set_channel remove power setting functions (diff)
downloadkernel-qcow2-linux-f5283274ccf531a7bb9231c777352f4852e2ded1.tar.gz
kernel-qcow2-linux-f5283274ccf531a7bb9231c777352f4852e2ded1.tar.xz
kernel-qcow2-linux-f5283274ccf531a7bb9231c777352f4852e2ded1.zip
staging: vt6656: Include re_alloc_skb within lock.
Remove variable re_alloc_skb and merge code within urb->actual_length. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vt6656/usbpipe.c')
-rw-r--r--drivers/staging/vt6656/usbpipe.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c
index c5d4047befe0..a7af4f58898e 100644
--- a/drivers/staging/vt6656/usbpipe.c
+++ b/drivers/staging/vt6656/usbpipe.c
@@ -276,7 +276,6 @@ static void s_nsBulkInUsbIoCompleteRead(struct urb *urb)
struct vnt_rcb *rcb = urb->context;
struct vnt_private *priv = rcb->pDevice;
unsigned long flags;
- int re_alloc_skb = false;
switch (urb->status) {
case 0:
@@ -294,24 +293,22 @@ static void s_nsBulkInUsbIoCompleteRead(struct urb *urb)
if (urb->actual_length) {
spin_lock_irqsave(&priv->lock, flags);
- if (vnt_rx_data(priv, rcb, urb->actual_length))
- re_alloc_skb = true;
+ if (vnt_rx_data(priv, rcb, urb->actual_length)) {
+ rcb->skb = dev_alloc_skb(priv->rx_buf_sz);
+ if (!rcb->skb) {
+ dev_dbg(&priv->usb->dev,
+ "Failed to re-alloc rx skb\n");
- spin_unlock_irqrestore(&priv->lock, flags);
- }
-
- if (re_alloc_skb) {
- rcb->skb = dev_alloc_skb(priv->rx_buf_sz);
- if (!rcb->skb) {
- dev_dbg(&priv->usb->dev, "Failed to re-alloc rx skb\n");
-
- rcb->bBoolInUse = false;
-
- return;
+ rcb->bBoolInUse = false;
+ spin_unlock_irqrestore(&priv->lock, flags);
+ return;
+ }
}
urb->transfer_buffer = skb_put(rcb->skb,
skb_tailroom(rcb->skb));
+
+ spin_unlock_irqrestore(&priv->lock, flags);
}
if (usb_submit_urb(urb, GFP_ATOMIC)) {