nfc: nxp-nci: Fix potential memory leak in nxp_nci_send()
authorShang XiaoJing <shangxiaojing@huawei.com>
Thu, 17 Nov 2022 11:37:13 +0000 (19:37 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Nov 2022 08:31:53 +0000 (08:31 +0000)
nxp_nci_send() won't free the skb when it failed for the check before
write(). As the result, the skb will memleak. Free the skb when the
check failed.

Fixes: dece45855a8b ("NFC: nxp-nci: Add support for NXP NCI chips")
Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Suggested-by: Pavel Machek <pavel@denx.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/nfc/nxp-nci/core.c

index 580cb6ecffee40056fcacb4625076c7e23d01366..66b198663387afb1c6ed8d8af176eeb80db6dbbf 100644 (file)
@@ -73,11 +73,15 @@ static int nxp_nci_send(struct nci_dev *ndev, struct sk_buff *skb)
        struct nxp_nci_info *info = nci_get_drvdata(ndev);
        int r;
 
-       if (!info->phy_ops->write)
+       if (!info->phy_ops->write) {
+               kfree_skb(skb);
                return -EOPNOTSUPP;
+       }
 
-       if (info->mode != NXP_NCI_MODE_NCI)
+       if (info->mode != NXP_NCI_MODE_NCI) {
+               kfree_skb(skb);
                return -EINVAL;
+       }
 
        r = info->phy_ops->write(info->phy_id, skb);
        if (r < 0) {