diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2018-09-21 04:07:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-09-21 22:19:07 -0400 |
commit | 83fe9a966111b51a34f10c35e568e45bff34de48 (patch) | |
tree | 11945dfd4538b07a1cd32e8093b20b8bbbb1b988 /net/core/devlink.c | |
parent | e6ce3822a9f264b3f24c1acdc624131fb014f2f0 (diff) |
devlink: double free in devlink_resource_fill()
Smatch reports that devlink_dpipe_send_and_alloc_skb() frees the skb
on error so this is a double free. We fixed a bunch of these bugs in
commit 7fe4d6dcbcb4 ("devlink: Remove redundant free on error path") but
we accidentally overlooked this one.
Fixes: d9f9b9a4d05f ("devlink: Add support for resource abstraction")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/devlink.c')
-rw-r--r-- | net/core/devlink.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c index 65fc366a78a4..8c0ed225e280 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c | |||
@@ -2592,7 +2592,7 @@ send_done: | |||
2592 | if (!nlh) { | 2592 | if (!nlh) { |
2593 | err = devlink_dpipe_send_and_alloc_skb(&skb, info); | 2593 | err = devlink_dpipe_send_and_alloc_skb(&skb, info); |
2594 | if (err) | 2594 | if (err) |
2595 | goto err_skb_send_alloc; | 2595 | return err; |
2596 | goto send_done; | 2596 | goto send_done; |
2597 | } | 2597 | } |
2598 | return genlmsg_reply(skb, info); | 2598 | return genlmsg_reply(skb, info); |
@@ -2600,7 +2600,6 @@ send_done: | |||
2600 | nla_put_failure: | 2600 | nla_put_failure: |
2601 | err = -EMSGSIZE; | 2601 | err = -EMSGSIZE; |
2602 | err_resource_put: | 2602 | err_resource_put: |
2603 | err_skb_send_alloc: | ||
2604 | nlmsg_free(skb); | 2603 | nlmsg_free(skb); |
2605 | return err; | 2604 | return err; |
2606 | } | 2605 | } |