[PATCH] phy: sunplus: Fix a memory leak in update_disc_vol()

Christophe JAILLET posted 1 patch 2 years ago
drivers/phy/sunplus/phy-sunplus-usb2.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] phy: sunplus: Fix a memory leak in update_disc_vol()
Posted by Christophe JAILLET 2 years ago
'otp_v', allocated by nvmem_cell_read(), is leaking.
It must be freed before leaving the function to avoid a leak.

Fixes: 99d9ccd97385 ("phy: usb: Add USB2.0 phy driver for Sunplus SP7021")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
This patch is speculative and based on comparison on the usage of
nvmem_cell_read() in other driver.

Review with care.
---
 drivers/phy/sunplus/phy-sunplus-usb2.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/phy/sunplus/phy-sunplus-usb2.c b/drivers/phy/sunplus/phy-sunplus-usb2.c
index 637a5fbae6d9..50f1f91ac052 100644
--- a/drivers/phy/sunplus/phy-sunplus-usb2.c
+++ b/drivers/phy/sunplus/phy-sunplus-usb2.c
@@ -105,6 +105,8 @@ static int update_disc_vol(struct sp_usbphy *usbphy)
 	val = (val & ~J_DISC) | set;
 	writel(val, usbphy->phy_regs + CONFIG7);
 
+	kfree(otp_v);
+
 	return 0;
 }
 
-- 
2.43.0
Re: [PATCH] phy: sunplus: Fix a memory leak in update_disc_vol()
Posted by Vinod Koul 2 years ago
On 28-01-24, 09:47, Christophe JAILLET wrote:
> 'otp_v', allocated by nvmem_cell_read(), is leaking.
> It must be freed before leaving the function to avoid a leak.
> 
> Fixes: 99d9ccd97385 ("phy: usb: Add USB2.0 phy driver for Sunplus SP7021")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> This patch is speculative and based on comparison on the usage of
> nvmem_cell_read() in other driver.
> 
> Review with care.
> ---
>  drivers/phy/sunplus/phy-sunplus-usb2.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/phy/sunplus/phy-sunplus-usb2.c b/drivers/phy/sunplus/phy-sunplus-usb2.c
> index 637a5fbae6d9..50f1f91ac052 100644
> --- a/drivers/phy/sunplus/phy-sunplus-usb2.c
> +++ b/drivers/phy/sunplus/phy-sunplus-usb2.c
> @@ -105,6 +105,8 @@ static int update_disc_vol(struct sp_usbphy *usbphy)
>  	val = (val & ~J_DISC) | set;
>  	writel(val, usbphy->phy_regs + CONFIG7);
>  
> +	kfree(otp_v);

Looking at documentation, this should be nvmem_cell_put() see:
Documentation/driver-api/nvmem.rst

What do you suggest Srini?

> +
>  	return 0;
>  }
>  
> -- 
> 2.43.0

-- 
~Vinod