Skip to contentSkip to conversation

vmxnet3: locking problems in xmit

PATCH Applied Dan Carpenter 3 participants 3 messages Dec 20, 2010

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 vmxnet3: locking problems in xmit

There were several paths that didn't release their locks.

drivers/net/vmxnet3/vmxnet3_drv.c +3 -1
index 23154cf..939e546 100644
@@ -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);
#1 lore raw

Indeed, indeed. Thanks for catching that and fixing it!

Quoted 4 lines

There were several paths that didn't release their locks.

Quoted 30 lines
drivers/net/vmxnet3/vmxnet3_drv.c +1 -1
index 23154cf..939e546 100644
@@ -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;
 	}
 
drivers/net/vmxnet3/vmxnet3_drv.c +2 -0
 	/* 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);
_______________________________________________
Pv-drivers mailing list
[email protected]
http://mailman2.vmware.com/mailman/listinfo/pv-drivers