diff options
author | Pavel Skripkin <paskripkin@gmail.com> | 2021-06-03 19:39:11 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-06-10 13:37:09 +0200 |
commit | f52f4fd67264c70cd0b4ba326962ebe12d9cba94 (patch) | |
tree | 361b8f29ee3bf2bf0ae6a294b73434384e4c2441 | |
parent | net: caif: add proper error handling (diff) | |
download | wireguard-linux-f52f4fd67264c70cd0b4ba326962ebe12d9cba94.tar.xz wireguard-linux-f52f4fd67264c70cd0b4ba326962ebe12d9cba94.zip |
net: caif: fix memory leak in caif_device_notify
commit b53558a950a89824938e9811eddfc8efcd94e1bb upstream.
In case of caif_enroll_dev() fail, allocated
link_support won't be assigned to the corresponding
structure. So simply free allocated pointer in case
of error
Fixes: 7c18d2205ea7 ("caif: Restructure how link caif link layer enroll")
Cc: stable@vger.kernel.org
Reported-and-tested-by: syzbot+7ec324747ce876a29db6@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | net/caif/caif_dev.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c index b45b0a064ddf..8a3c19b9a995 100644 --- a/net/caif/caif_dev.c +++ b/net/caif/caif_dev.c @@ -369,6 +369,7 @@ static int caif_device_notify(struct notifier_block *me, unsigned long what, struct cflayer *layer, *link_support; int head_room = 0; struct caif_device_entry_list *caifdevs; + int res; cfg = get_cfcnfg(dev_net(dev)); caifdevs = caif_device_list(dev_net(dev)); @@ -394,8 +395,10 @@ static int caif_device_notify(struct notifier_block *me, unsigned long what, break; } } - caif_enroll_dev(dev, caifdev, link_support, head_room, + res = caif_enroll_dev(dev, caifdev, link_support, head_room, &layer, NULL); + if (res) + cfserl_release(link_support); caifdev->flowctrl = dev_flowctrl; break; |