Message ID | 20240201124108.3052635-1-alexious@zju.edu.cn (mailing list archive) |
---|---|
State | Accepted |
Commit | f3616173bf9be9bf39d131b120d6eea4e6324cb5 |
Headers | show |
Series | atm: idt77252: fix a memleak in open_card_ubr0 | expand |
Thu, Feb 01, 2024 at 01:41:05PM CET, alexious@zju.edu.cn wrote: >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@zju.edu.cn> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 1 Feb 2024 20:41:05 +0800 you wrote: > 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); > > [...] Here is the summary with links: - atm: idt77252: fix a memleak in open_card_ubr0 https://git.kernel.org/netdev/net/c/f3616173bf9b You are awesome, thank you!
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; }
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@zju.edu.cn> --- drivers/atm/idt77252.c | 2 ++ 1 file changed, 2 insertions(+)