vmxnet3: locking problems in xmit
authorDan Carpenter <error27@gmail.com>
Mon, 20 Dec 2010 03:03:15 +0000 (03:03 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Dec 2010 18:44:25 +0000 (10:44 -0800)
There were several paths that didn't release their locks.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Bhavesh Davda <bhavesh@vmware.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vmxnet3/vmxnet3_drv.c

index 23154cf..939e546 100644 (file)
@@ -980,7 +980,7 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq,
                }
        } else {
                tq->stats.drop_hdr_inspect_err++;
-               goto drop_pkt;
+               goto unlock_drop_pkt;
        }
 
        /* fill tx descs related to addr & len */
@@ -1052,6 +1052,8 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq,
 
 hdr_too_big:
        tq->stats.drop_oversized_hdr++;
+unlock_drop_pkt:
+       spin_unlock_irqrestore(&tq->tx_lock, flags);
 drop_pkt:
        tq->stats.drop_total++;
        dev_kfree_skb(skb);