diff options
author | Dan Carpenter <error27@gmail.com> | 2010-12-20 03:03:15 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-20 10:44:25 -0800 |
commit | f955e1415f381c7fa6ebe8630cd1fe5a694e8f4a (patch) | |
tree | b5dc284644c8151c4fe2996a23e6f4d1d50a2285 | |
parent | 6561a3b12d62ed5317e6ac32182d87a03f62c8dc (diff) |
vmxnet3: locking problems in xmit
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>
-rw-r--r-- | drivers/net/vmxnet3/vmxnet3_drv.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 23154cf601e..939e5466c75 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -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); |