2022-06-29 18:15:43

by Jianglei Nie

[permalink] [raw]
Subject: [PATCH] net: atlantic: fix potential memory leak in aq_ndev_close()

If aq_nic_stop() fails, aq_ndev_close() returns err without calling
aq_nic_deinit() to release the relevant memory and resource, which
will lead to a memory leak.

We can fix it by deleting the if condition judgment and goto statement to
call aq_nic_deinit() directly after aq_nic_stop() to fix the memory leak.

Signed-off-by: Jianglei Nie <[email protected]>
---
drivers/net/ethernet/aquantia/atlantic/aq_main.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_main.c b/drivers/net/ethernet/aquantia/atlantic/aq_main.c
index 88595863d8bc..362f8077ff97 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_main.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_main.c
@@ -94,8 +94,6 @@ static int aq_ndev_close(struct net_device *ndev)
int err = 0;

err = aq_nic_stop(aq_nic);
- if (err < 0)
- goto err_exit;
aq_nic_deinit(aq_nic, true);

err_exit:
--
2.25.1


2022-07-01 03:40:03

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH] net: atlantic: fix potential memory leak in aq_ndev_close()

On Thu, 30 Jun 2022 01:56:45 +0800 Jianglei Nie wrote:
> err = aq_nic_stop(aq_nic);
> - if (err < 0)
> - goto err_exit;
> aq_nic_deinit(aq_nic, true);
>
> err_exit:

label is now unused, please make sure you build test your changes with
W=1