diff options
author | Pan Bian <bianpan2016@163.com> | 2017-04-24 06:29:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-04-25 11:35:01 -0400 |
commit | 72ec0bc64b9a5d8e0efcb717abfc757746b101b7 (patch) | |
tree | e0858100cdb8800654815e1eb114b27e73038044 | |
parent | fccb4422d045263fa021438e2c52a07b037683f2 (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.c | 8 |
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; |