[PATCH] phy: uniphier-usb3: no devm for nvmem_cell_get

Rosen Penev posted 1 patch 1 month, 1 week ago
drivers/phy/socionext/phy-uniphier-usb3hs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] phy: uniphier-usb3: no devm for nvmem_cell_get
Posted by Rosen Penev 1 month, 1 week ago
There is absolutely no reason to extend the lifetime of nvmem_cell_get
to after removal of the driver. Use and free right after use.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/phy/socionext/phy-uniphier-usb3hs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/socionext/phy-uniphier-usb3hs.c b/drivers/phy/socionext/phy-uniphier-usb3hs.c
index 8c8673df0084..c8971eee3640 100644
--- a/drivers/phy/socionext/phy-uniphier-usb3hs.c
+++ b/drivers/phy/socionext/phy-uniphier-usb3hs.c
@@ -104,11 +104,12 @@ static int uniphier_u3hsphy_get_nvparam(struct uniphier_u3hsphy_priv *priv,
 	struct nvmem_cell *cell;
 	u8 *buf;
 
-	cell = devm_nvmem_cell_get(priv->dev, name);
+	cell = nvmem_cell_get(priv->dev, name);
 	if (IS_ERR(cell))
 		return PTR_ERR(cell);
 
 	buf = nvmem_cell_read(cell, NULL);
+	nvmem_cell_put(cell);
 	if (IS_ERR(buf))
 		return PTR_ERR(buf);
 
-- 
2.53.0
Re: [PATCH] phy: uniphier-usb3: no devm for nvmem_cell_get
Posted by Kunihiko Hayashi 1 month, 1 week ago
Hi Rosen,

On 2026/03/04 13:16, Rosen Penev wrote:
> There is absolutely no reason to extend the lifetime of nvmem_cell_get
> to after removal of the driver. Use and free right after use.
> 
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>   drivers/phy/socionext/phy-uniphier-usb3hs.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/phy/socionext/phy-uniphier-usb3hs.c
> b/drivers/phy/socionext/phy-uniphier-usb3hs.c
> index 8c8673df0084..c8971eee3640 100644
> --- a/drivers/phy/socionext/phy-uniphier-usb3hs.c
> +++ b/drivers/phy/socionext/phy-uniphier-usb3hs.c
> @@ -104,11 +104,12 @@ static int uniphier_u3hsphy_get_nvparam(struct
> uniphier_u3hsphy_priv *priv,
>   	struct nvmem_cell *cell;
>   	u8 *buf;
>   
> -	cell = devm_nvmem_cell_get(priv->dev, name);
> +	cell = nvmem_cell_get(priv->dev, name);
>   	if (IS_ERR(cell))
>   		return PTR_ERR(cell);
>   
>   	buf = nvmem_cell_read(cell, NULL);
> +	nvmem_cell_put(cell);
>   	if (IS_ERR(buf))
>   		return PTR_ERR(buf);
>   

Looks good to me.
This function is called multiple times and creates a cell each time,
so it's probably better to delete it after using it.

Reviewed-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Thank you,

---
Best Regards
Kunihiko Hayashi