[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20220803133109.GD3438@kadam>
Date: Wed, 3 Aug 2022 16:31:09 +0300
From: Dan Carpenter <dan.carpenter@...cle.com>
To: Christophe JAILLET <christophe.jaillet@...adoo.fr>
Cc: Daniel Mack <daniel@...que.org>,
Haojian Zhuang <haojian.zhuang@...il.com>,
Robert Jarzmik <robert.jarzmik@...e.fr>,
Russell King <linux@...linux.org.uk>,
Sascha Hauer <s.hauer@...gutronix.de>,
Heikki Krogerus <heikki.krogerus@...ux.intel.com>,
Marek Vasut <marek.vasut@...il.com>,
Igor Grinberg <grinberg@...pulab.co.il>,
Felipe Balbi <balbi@...com>, linux-kernel@...r.kernel.org,
kernel-janitors@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH] ARM: pxa: Fix a memory leak in pxa310_otg_exit()
On Wed, Aug 03, 2022 at 08:00:44AM +0200, Christophe JAILLET wrote:
> arch/arm/mach-pxa/pxa3xx-ulpi.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c
> index c29a7f0fa1b0..82b4e2706f86 100644
> --- a/arch/arm/mach-pxa/pxa3xx-ulpi.c
> +++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c
> @@ -229,6 +229,7 @@ static int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata)
>
> static void pxa310_otg_exit(void)
> {
> + kfree(u2d->otg->otg);
> kfree(u2d->otg);
It's unfortunate that we kept the "otg" name when changed u2d->otg to
a phy. A lot of the stuff was renamed... I don't have a cross compile
system set up either so I can't patch it but looks reasonably simple to
rename the remaining instance to phy?
diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c
index c29a7f0fa1b0..a002fe1e96a2 100644
--- a/arch/arm/mach-pxa/pxa3xx-ulpi.c
+++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c
@@ -30,7 +30,7 @@ struct pxa3xx_u2d_ulpi {
struct clk *clk;
void __iomem *mmio_base;
- struct usb_phy *otg;
+ struct usb_phy *phy;
unsigned int ulpi_mode;
};
@@ -76,7 +76,7 @@ static int pxa310_ulpi_poll(void)
return -ETIMEDOUT;
}
-static int pxa310_ulpi_read(struct usb_phy *otg, u32 reg)
+static int pxa310_ulpi_read(struct usb_phy *phy, u32 reg)
{
int err;
@@ -95,7 +95,7 @@ static int pxa310_ulpi_read(struct usb_phy *otg, u32 reg)
return u2d_readl(U2DOTGUCR) & U2DOTGUCR_RDATA;
}
-static int pxa310_ulpi_write(struct usb_phy *otg, u32 val, u32 reg)
+static int pxa310_ulpi_write(struct usb_phy *phy, u32 val, u32 reg)
{
if (pxa310_ulpi_get_phymode() != SYNCH) {
pr_warn("%s: PHY is not in SYNCH mode!\n", __func__);
@@ -136,19 +136,19 @@ static int pxa310_start_otg_host_transcvr(struct usb_bus *host)
pxa310_otg_transceiver_rtsm();
- err = usb_phy_init(u2d->otg);
+ err = usb_phy_init(u2d->phy);
if (err) {
pr_err("OTG transceiver init failed");
return err;
}
- err = otg_set_vbus(u2d->otg->otg, 1);
+ err = otg_set_vbus(u2d->phy->otg, 1);
if (err) {
pr_err("OTG transceiver VBUS set failed");
return err;
}
- err = otg_set_host(u2d->otg->otg, host);
+ err = otg_set_host(u2d->phy->otg, host);
if (err)
pr_err("OTG transceiver Host mode set failed");
@@ -186,9 +186,9 @@ static void pxa310_stop_otg_hc(void)
{
pxa310_otg_transceiver_rtsm();
- otg_set_host(u2d->otg->otg, NULL);
- otg_set_vbus(u2d->otg->otg, 0);
- usb_phy_shutdown(u2d->otg);
+ otg_set_host(u2d->phy->otg, NULL);
+ otg_set_vbus(u2d->phy->otg, 0);
+ usb_phy_shutdown(u2d->phy);
}
static void pxa310_u2d_setup_otg_hc(void)
@@ -218,18 +218,18 @@ static int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata)
u2d->ulpi_mode = ulpi_mode;
- u2d->otg = otg_ulpi_create(&pxa310_ulpi_access_ops, ulpi_mode);
- if (!u2d->otg)
+ u2d->phy = otg_ulpi_create(&pxa310_ulpi_access_ops, ulpi_mode);
+ if (!u2d->phy)
return -ENOMEM;
- u2d->otg->io_priv = u2d->mmio_base;
+ u2d->phy->io_priv = u2d->mmio_base;
return 0;
}
static void pxa310_otg_exit(void)
{
- kfree(u2d->otg);
+ kfree(u2d->phy);
}
#else
static inline void pxa310_u2d_setup_otg_hc(void) {}
Powered by blists - more mailing lists