[ovs-dev] [PATCH] datapath: Check for positive packet length in vport_send().

Jesse Gross jesse at nicira.com
Mon May 13 15:33:54 UTC 2013


When sending a packet, a positive length indicates success and a
negative length indicates failure. However, the check for success
looked for non-zero values which catches both of these cases. This
can result in incorrect stats and leak memory on failure.

Introduced by commit be7cd27e44258bdb3c4e7dd8fd7389b5db56d55a (datapath:
Unify vport error stats handling.).

CC: Pravin B Shelar <pshelar at nicira.com>
Signed-off-by: Jesse Gross <jesse at nicira.com>
---
 datapath/vport.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/datapath/vport.c b/datapath/vport.c
index 93ab2b5..745ffe4 100644
--- a/datapath/vport.c
+++ b/datapath/vport.c
@@ -382,7 +382,7 @@ int ovs_vport_send(struct vport *vport, struct sk_buff *skb)
 {
 	int sent = vport->ops->send(vport, skb);
 
-	if (likely(sent)) {
+	if (likely(sent > 0)) {
 		struct pcpu_tstats *stats;
 
 		stats = this_cpu_ptr(vport->percpu_stats);
-- 
1.8.1.2




More information about the dev mailing list