]> git.proxmox.com Git - mirror_ovs.git/commitdiff
ofproto-dpif: Free leaked 'webster'
authorYifeng Sun <pkusunyifeng@gmail.com>
Wed, 11 Sep 2019 21:18:34 +0000 (14:18 -0700)
committerBen Pfaff <blp@ovn.org>
Thu, 19 Sep 2019 16:24:02 +0000 (09:24 -0700)
Valgrind reported:

1122: ofproto-dpif - select group with explicit dp_hash selection method

==16884== 64 bytes in 1 blocks are definitely lost in loss record 320 of 346
==16884==    at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16884==    by 0x532512: xcalloc (util.c:121)
==16884==    by 0x4262B9: group_setup_dp_hash_table (ofproto-dpif.c:4846)
==16884==    by 0x4267CB: group_set_selection_method (ofproto-dpif.c:4938)
==16884==    by 0x4267CB: group_construct (ofproto-dpif.c:4984)
==16884==    by 0x417250: init_group (ofproto.c:7286)
==16884==    by 0x41B4FC: add_group_start (ofproto.c:7316)
==16884==    by 0x42247A: ofproto_group_mod_start (ofproto.c:7589)
==16884==    by 0x4250EC: handle_group_mod (ofproto.c:7744)
==16884==    by 0x4250EC: handle_single_part_openflow (ofproto.c:8428)
==16884==    by 0x4250EC: handle_openflow (ofproto.c:8606)
==16884==    by 0x4579E2: ofconn_run (connmgr.c:1318)
==16884==    by 0x4579E2: connmgr_run (connmgr.c:355)
==16884==    by 0x41E0F5: ofproto_run (ofproto.c:1845)
==16884==    by 0x40BA63: bridge_run__ (bridge.c:2971)
==16884==    by 0x410CF3: bridge_run (bridge.c:3029)
==16884==    by 0x407614: main (ovs-vswitchd.c:127)

This patch fixes it.

Acked-by: William Tu <u9012063@gmail.com>
Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif.c

index 46fa1357163b408d4ec58d4ce89785dbff7ea5e3..7bb0f7bdb4f3570368e445f61f87defd295baeb2 100644 (file)
@@ -4871,6 +4871,7 @@ group_setup_dp_hash_table(struct group_dpif *group, size_t max_hash)
     if (n_hash > MAX_SELECT_GROUP_HASH_VALUES ||
         (max_hash != 0 && n_hash > max_hash)) {
         VLOG_DBG("  Too many hash values required: %"PRIu64, n_hash);
+        free(webster);
         return false;
     }