diff options
author | Dan Carpenter <error27@gmail.com> | 2010-12-19 22:03:15 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-20 13:44:25 -0500 |
commit | f955e1415f381c7fa6ebe8630cd1fe5a694e8f4a (patch) | |
tree | b5dc284644c8151c4fe2996a23e6f4d1d50a2285 /drivers/net/vmxnet3/vmxnet3_drv.c | |
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>
Diffstat (limited to 'drivers/net/vmxnet3/vmxnet3_drv.c')
-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 23154cf601e9..939e5466c75e 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, | |||
980 | } | 980 | } |
981 | } else { | 981 | } else { |
982 | tq->stats.drop_hdr_inspect_err++; | 982 | tq->stats.drop_hdr_inspect_err++; |
983 | goto drop_pkt; | 983 | goto unlock_drop_pkt; |
984 | } | 984 | } |
985 | 985 | ||
986 | /* fill tx descs related to addr & len */ | 986 | /* fill tx descs related to addr & len */ |
@@ -1052,6 +1052,8 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq, | |||
1052 | 1052 | ||
1053 | hdr_too_big: | 1053 | hdr_too_big: |
1054 | tq->stats.drop_oversized_hdr++; | 1054 | tq->stats.drop_oversized_hdr++; |
1055 | unlock_drop_pkt: | ||
1056 | spin_unlock_irqrestore(&tq->tx_lock, flags); | ||
1055 | drop_pkt: | 1057 | drop_pkt: |
1056 | tq->stats.drop_total++; | 1058 | tq->stats.drop_total++; |
1057 | dev_kfree_skb(skb); | 1059 | dev_kfree_skb(skb); |