[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240201124108.3052635-1-alexious@zju.edu.cn>
Date: Thu, 1 Feb 2024 20:41:05 +0800
From: Zhipeng Lu <alexious@....edu.cn>
To: alexious@....edu.cn
Cc: Chas Williams <3chas3@...il.com>,
linux-atm-general@...ts.sourceforge.net,
netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] atm: idt77252: fix a memleak in open_card_ubr0
When alloc_scq fails, card->vcs[0] (i.e. vc) should be freed. Otherwise,
in the following call chain:
idt77252_init_one
|-> idt77252_dev_open
|-> open_card_ubr0
|-> alloc_scq [failed]
|-> deinit_card
|-> vfree(card->vcs);
card->vcs is freed and card->vcs[0] is leaked.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Zhipeng Lu <alexious@....edu.cn>
---
drivers/atm/idt77252.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index e327a0229dc1..e7f713cd70d3 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -2930,6 +2930,8 @@ open_card_ubr0(struct idt77252_dev *card)
vc->scq = alloc_scq(card, vc->class);
if (!vc->scq) {
printk("%s: can't get SCQ.\n", card->name);
+ kfree(card->vcs[0]);
+ card->vcs[0] = NULL;
return -ENOMEM;
}
--
2.34.1
Powered by blists - more mailing lists