]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: caif: fix memory leak in caif_device_notify
authorPavel Skripkin <paskripkin@gmail.com>
Thu, 3 Jun 2021 16:39:11 +0000 (19:39 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Jun 2021 22:05:07 +0000 (15:05 -0700)
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>
net/caif/caif_dev.c

index fffbe41440b3d78866cfcbe53e60cdb33e6cc270..440139706130af73ee3e74f19d4194e87b1ffc5d 100644 (file)
@@ -370,6 +370,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));
@@ -395,8 +396,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;