aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPavel Skripkin <paskripkin@gmail.com>2021-06-03 19:39:11 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-06-10 13:37:09 +0200
commitf52f4fd67264c70cd0b4ba326962ebe12d9cba94 (patch)
tree361b8f29ee3bf2bf0ae6a294b73434384e4c2441
parentnet: caif: add proper error handling (diff)
downloadwireguard-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.c5
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;