Direct leak of 64 byte(s) in 1 object(s) allocated from:
   0 0x51b1d8 in malloc (vswitchd/ovs-vswitchd+0x51b1d8)
   1 0xc81ded in xmalloc__ lib/util.c:137:15
   2 0xc81ded in xmalloc lib/util.c:172:12
   3 0xb32153 in ofpbuf_new lib/ofpbuf.c:168:24
   4 0xd563e4 in nl_sock_transact lib/netlink-socket.c:1113:34
   5 0xd56261 in nl_transact lib/netlink-socket.c:1812:13
   6 0xd5e096 in tc_transact lib/tc.c:238:17
   7 0xd01622 in tc_del_policer_action lib/netdev-linux.c:5807:13
   8 0xd2e681 in meter_tc_del_policer lib/netdev-offload-tc.c:2827:15
   9 0x94ec21 in meter_offload_del lib/netdev-offload.c:245:23
  10 0xcc86c4 in dpif_netlink_meter_del lib/dpif-netlink.c:4288:9
  11 0x86c595 in dpif_meter_del lib/dpif.c:2014:13
  12 0x663439 in free_meter_id ofproto/ofproto-dpif.c:6789:5
  13 0xb47518 in ovsrcu_call_postponed lib/ovs-rcu.c:346:13
  14 0xb48031 in ovsrcu_postpone_thread lib/ovs-rcu.c:362:14
  15 0xb5015a in ovsthread_wrapper lib/ovs-thread.c:422:12
  16 0x7f86af4081ce in start_thread (/lib64/libpthread.so.0+0x81ce)

Fixes: 5c039ddc64ff ("netdev-linux: Add functions to manipulate tc police 
action")
Signed-off-by: Ilya Maximets <[email protected]>
---
 lib/netdev-linux.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index 6bdfbe88c..9e63b1242 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -5711,22 +5711,24 @@ tc_update_policer_action_stats(struct ofpbuf *msg,
     const struct nlattr *act;
     struct nlattr *prio;
     struct tcamsg *tca;
-    int error;
+    int error = 0;
 
     if (!stats) {
-        return 0;
+        goto exit;
     }
 
     if (NLMSG_HDRLEN + sizeof *tca > msg->size) {
         VLOG_ERR_RL(&rl, "Failed to get action stats, size error");
-        return EPROTO;
+        error = EPROTO;
+        goto exit;
     }
 
     tca = ofpbuf_at_assert(msg, NLMSG_HDRLEN, sizeof *tca);
     act = nl_attr_find(msg, NLMSG_HDRLEN + sizeof *tca, TCA_ACT_TAB);
     if (!act) {
         VLOG_ERR_RL(&rl, "Failed to get action stats, can't find attribute");
-        return EPROTO;
+        error = EPROTO;
+        goto exit;
     }
 
     prio = (struct nlattr *) act + 1;
@@ -5747,6 +5749,8 @@ tc_update_policer_action_stats(struct ofpbuf *msg,
         }
     }
 
+exit:
+    ofpbuf_delete(msg);
     return error;
 }
 
-- 
2.34.3

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to