bridge: Avoid memory leak from RSPAN mirrors in bridge_destroy().
authorBen Pfaff <blp@nicira.com>
Mon, 11 Apr 2011 18:22:39 +0000 (11:22 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 20 Apr 2011 17:41:23 +0000 (10:41 -0700)
Mirrors that output to ports will be destroyed when their output ports are
destroyed, but mirrors that output to VLANs ("RSPAN" mirrors) don't get
automatically destroyed like this and we need to take care of them in a
separate loop.

vswitchd/bridge.c

index f5918be0332940f12de56c0f8a9ddf0ee86b5415..2b8b2482381f60018be980b2a1693a7ab5865ea3 100644 (file)
@@ -1696,10 +1696,14 @@ bridge_destroy(struct bridge *br)
     if (br) {
         struct port *port, *next;
         int error;
+        int i;
 
         HMAP_FOR_EACH_SAFE (port, next, hmap_node, &br->ports) {
             port_destroy(port);
         }
+        for (i = 0; i < MAX_MIRRORS; i++) {
+            mirror_destroy(br->mirrors[i]);
+        }
         list_remove(&br->node);
         ofproto_destroy(br->ofproto);
         error = dpif_delete(br->dpif);