aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPan Bian <bianpan2016@163.com>2017-04-24 06:29:16 -0400
committerDavid S. Miller <davem@davemloft.net>2017-04-25 11:35:01 -0400
commit72ec0bc64b9a5d8e0efcb717abfc757746b101b7 (patch)
treee0858100cdb8800654815e1eb114b27e73038044
parentfccb4422d045263fa021438e2c52a07b037683f2 (diff)
team: fix memory leaks
In functions team_nl_send_port_list_get() and team_nl_send_options_get(), pointer skb keeps the return value of nlmsg_new(). When the call to genlmsg_put() fails, the memory is not freed(). This will result in memory leak bugs. Fixes: 9b00cf2d1024 ("team: implement multipart netlink messages for options transfers") Signed-off-by: Pan Bian <bianpan2016@163.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/team/team.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index f8c81f12d988..85c01247f2e3 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -2361,8 +2361,10 @@ start_again:
2361 2361
2362 hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags | NLM_F_MULTI, 2362 hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags | NLM_F_MULTI,
2363 TEAM_CMD_OPTIONS_GET); 2363 TEAM_CMD_OPTIONS_GET);
2364 if (!hdr) 2364 if (!hdr) {
2365 nlmsg_free(skb);
2365 return -EMSGSIZE; 2366 return -EMSGSIZE;
2367 }
2366 2368
2367 if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) 2369 if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex))
2368 goto nla_put_failure; 2370 goto nla_put_failure;
@@ -2634,8 +2636,10 @@ start_again:
2634 2636
2635 hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags | NLM_F_MULTI, 2637 hdr = genlmsg_put(skb, portid, seq, &team_nl_family, flags | NLM_F_MULTI,
2636 TEAM_CMD_PORT_LIST_GET); 2638 TEAM_CMD_PORT_LIST_GET);
2637 if (!hdr) 2639 if (!hdr) {
2640 nlmsg_free(skb);
2638 return -EMSGSIZE; 2641 return -EMSGSIZE;
2642 }
2639 2643
2640 if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex)) 2644 if (nla_put_u32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex))
2641 goto nla_put_failure; 2645 goto nla_put_failure;