Hi,

I think I've found a memory leak in 1.4 branch. When a userspace rule sends a packet to the controller, execute_controller_action is called with clone=true, so send_packet_in_action doesn't free the buffer, and noone else does that later as well. It's easy to reproduce with DVSC, you have to install a rule which sends everything to the controller:

ovs-ofctl add-flow xenbr0 priority=65535,actions=controller

And then trigger it e.g. with MouseZahn:

mz -B [mgmt IP] -d 100m eth0 -t udp sp=3000,dp=1024-65535,iplen=1400

The memory consumption grows steadily. Here is a proposed solution, please review it. I will reformat it later as a proper patch:

diff -r d44b4f830fd2 ofproto/ofproto-dpif.c
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -2570,6 +2570,8 @@ handle_flow_miss(struct ofproto_dpif *of
                    : xmemdup(subfacet->actions, subfacet->actions_len));
             execute->actions_len = subfacet->actions_len;
             execute->packet = packet;
+        } else {
+            ofpbuf_delete(packet);
         }
     }


Regards,

Zoltan Kiss
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to