diff mbox

[v2] devlink: fix potential memort leak

Message ID 1496624241-25794-1-git-send-email-yanhaishuang@cmss.chinamobile.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Haishuang Yan June 5, 2017, 12:57 a.m. UTC
We must free allocated skb when genlmsg_put() return fails.

Fixes: 1555d204e743 ("devlink: Support for pipeline debug (dpipe)")
Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>

---
Changes in v2:
  - Fix same issue in headers_fill.
---
 net/core/devlink.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Jiri Pirko June 5, 2017, 4:51 a.m. UTC | #1
Mon, Jun 05, 2017 at 02:57:21AM CEST, yanhaishuang@cmss.chinamobile.com wrote:
>We must free allocated skb when genlmsg_put() return fails.
>
>Fixes: 1555d204e743 ("devlink: Support for pipeline debug (dpipe)")
>Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>

Acked-by: Jiri Pirko <jiri@mellanox.com>

Thanks.
David Miller June 5, 2017, 3:28 p.m. UTC | #2
From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date: Mon,  5 Jun 2017 08:57:21 +0800

> We must free allocated skb when genlmsg_put() return fails.
> 
> Fixes: 1555d204e743 ("devlink: Support for pipeline debug (dpipe)")
> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
> 
> ---
> Changes in v2:
>   - Fix same issue in headers_fill.

Applied, thank you.
diff mbox

Patch

diff --git a/net/core/devlink.c b/net/core/devlink.c
index b0b87a2..a0adfc3 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -1680,8 +1680,10 @@  static int devlink_dpipe_tables_fill(struct genl_info *info,
 
 	hdr = genlmsg_put(skb, info->snd_portid, info->snd_seq,
 			  &devlink_nl_family, NLM_F_MULTI, cmd);
-	if (!hdr)
+	if (!hdr) {
+		nlmsg_free(skb);
 		return -EMSGSIZE;
+	}
 
 	if (devlink_nl_put_handle(skb, devlink))
 		goto nla_put_failure;
@@ -2098,8 +2100,10 @@  static int devlink_dpipe_headers_fill(struct genl_info *info,
 
 	hdr = genlmsg_put(skb, info->snd_portid, info->snd_seq,
 			  &devlink_nl_family, NLM_F_MULTI, cmd);
-	if (!hdr)
+	if (!hdr) {
+		nlmsg_free(skb);
 		return -EMSGSIZE;
+	}
 
 	if (devlink_nl_put_handle(skb, devlink))
 		goto nla_put_failure;