diff mbox series

[v1] usb: dwc3: add device put function to decrement the ref-counted reference

Message ID 20231107091252.11783-1-stanley_chang@realtek.com (mailing list archive)
State Superseded
Headers show
Series [v1] usb: dwc3: add device put function to decrement the ref-counted reference | expand

Commit Message

Stanley Chang[昌育德] Nov. 7, 2023, 9:12 a.m. UTC
When the function exits, the count should be decremented via
platform_device_put and of_node_put.

Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue layer driver")
Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
---
 drivers/usb/dwc3/dwc3-rtk.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Thinh Nguyen Nov. 10, 2023, 2:34 a.m. UTC | #1
On Tue, Nov 07, 2023, Stanley Chang wrote:
> When the function exits, the count should be decremented via
> platform_device_put and of_node_put.
> 
> Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue layer driver")
> Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
> ---
>  drivers/usb/dwc3/dwc3-rtk.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
> index 590028e8fdcb..9d6f2a8bd6ce 100644
> --- a/drivers/usb/dwc3/dwc3-rtk.c
> +++ b/drivers/usb/dwc3/dwc3-rtk.c
> @@ -187,6 +187,7 @@ static enum usb_device_speed __get_dwc3_maximum_speed(struct device_node *np)
>  
>  	ret = match_string(speed_names, ARRAY_SIZE(speed_names), maximum_speed);
>  
> +	of_node_put(dwc3_np);
>  	return (ret < 0) ? USB_SPEED_UNKNOWN : ret;
>  }
>  
> @@ -339,6 +340,8 @@ static int dwc3_rtk_probe_dwc3_core(struct dwc3_rtk *rtk)
>  
>  	switch_usb2_role(rtk, rtk->cur_role);
>  
> +	platform_device_put(dwc3_pdev);

Don't you use this after probe? Why put here and not on remove?

BR,
Thinh

> +	of_node_put(dwc3_node);
>  	return 0;
>  
>  err_pdev_put:
> -- 
> 2.34.1
>
Stanley Chang[昌育德] Nov. 10, 2023, 2:43 a.m. UTC | #2
> -----Original Message-----
> From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
> Sent: Friday, November 10, 2023 10:34 AM
> To: Stanley Chang[昌育德] <stanley_chang@realtek.com>
> Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>; Christophe JAILLET
> <christophe.jaillet@wanadoo.fr>; Greg Kroah-Hartman
> <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org;
> linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v1] usb: dwc3: add device put function to decrement the
> ref-counted reference
> 
> 
> External mail.
> 
> 
> 
> On Tue, Nov 07, 2023, Stanley Chang wrote:
> > When the function exits, the count should be decremented via
> > platform_device_put and of_node_put.
> >
> > Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue
> > layer driver")
> > Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
> > ---
> >  drivers/usb/dwc3/dwc3-rtk.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
> > index 590028e8fdcb..9d6f2a8bd6ce 100644
> > --- a/drivers/usb/dwc3/dwc3-rtk.c
> > +++ b/drivers/usb/dwc3/dwc3-rtk.c
> > @@ -187,6 +187,7 @@ static enum usb_device_speed
> > __get_dwc3_maximum_speed(struct device_node *np)
> >
> >       ret = match_string(speed_names, ARRAY_SIZE(speed_names),
> > maximum_speed);
> >
> > +     of_node_put(dwc3_np);
> >       return (ret < 0) ? USB_SPEED_UNKNOWN : ret;  }
> >
> > @@ -339,6 +340,8 @@ static int dwc3_rtk_probe_dwc3_core(struct
> > dwc3_rtk *rtk)
> >
> >       switch_usb2_role(rtk, rtk->cur_role);
> >
> > +     platform_device_put(dwc3_pdev);
> 
> Don't you use this after probe? Why put here and not on remove?

I don't use dwc3_pdev in driver.
I use rtk->dwc and dwc is removed by of_platform_depopulate on remove.
So I think I don't need to keep the count of dwc3_pdev.

Thanks,
Stanley

> 
> BR,
> Thinh
> 
> > +     of_node_put(dwc3_node);
> >       return 0;
> >
> >  err_pdev_put:
> > --
> > 2.34.1
> >
Thinh Nguyen Nov. 10, 2023, 10:54 p.m. UTC | #3
On Fri, Nov 10, 2023, Stanley Chang[昌育德] wrote:
> 
> 
> > -----Original Message-----
> > From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
> > Sent: Friday, November 10, 2023 10:34 AM
> > To: Stanley Chang[昌育德] <stanley_chang@realtek.com>
> > Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>; Christophe JAILLET
> > <christophe.jaillet@wanadoo.fr>; Greg Kroah-Hartman
> > <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org;
> > linux-kernel@vger.kernel.org
> > Subject: Re: [PATCH v1] usb: dwc3: add device put function to decrement the
> > ref-counted reference
> > 
> > 
> > External mail.
> > 
> > 
> > 
> > On Tue, Nov 07, 2023, Stanley Chang wrote:
> > > When the function exits, the count should be decremented via
> > > platform_device_put and of_node_put.
> > >
> > > Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue
> > > layer driver")
> > > Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
> > > ---
> > >  drivers/usb/dwc3/dwc3-rtk.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
> > > index 590028e8fdcb..9d6f2a8bd6ce 100644
> > > --- a/drivers/usb/dwc3/dwc3-rtk.c
> > > +++ b/drivers/usb/dwc3/dwc3-rtk.c
> > > @@ -187,6 +187,7 @@ static enum usb_device_speed
> > > __get_dwc3_maximum_speed(struct device_node *np)
> > >
> > >       ret = match_string(speed_names, ARRAY_SIZE(speed_names),
> > > maximum_speed);
> > >
> > > +     of_node_put(dwc3_np);
> > >       return (ret < 0) ? USB_SPEED_UNKNOWN : ret;  }
> > >
> > > @@ -339,6 +340,8 @@ static int dwc3_rtk_probe_dwc3_core(struct
> > > dwc3_rtk *rtk)
> > >
> > >       switch_usb2_role(rtk, rtk->cur_role);
> > >
> > > +     platform_device_put(dwc3_pdev);
> > 
> > Don't you use this after probe? Why put here and not on remove?
> 
> I don't use dwc3_pdev in driver.
> I use rtk->dwc and dwc is removed by of_platform_depopulate on remove.
> So I think I don't need to keep the count of dwc3_pdev.
> 

Thanks for the clarification.

Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>

BR,
Thinh
Johan Hovold Nov. 11, 2023, 10:45 a.m. UTC | #4
On Tue, Nov 07, 2023 at 05:12:51PM +0800, Stanley Chang wrote:
> When the function exits, the count should be decremented via
> platform_device_put and of_node_put.

This isn't really a self-contained commit message (and your use of
'count' is too vague). You're also changing two functions in two
different ways here.

> Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue layer driver")
> Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
> ---
>  drivers/usb/dwc3/dwc3-rtk.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
> index 590028e8fdcb..9d6f2a8bd6ce 100644
> --- a/drivers/usb/dwc3/dwc3-rtk.c
> +++ b/drivers/usb/dwc3/dwc3-rtk.c
> @@ -187,6 +187,7 @@ static enum usb_device_speed __get_dwc3_maximum_speed(struct device_node *np)
>  
>  	ret = match_string(speed_names, ARRAY_SIZE(speed_names), maximum_speed);
>  
> +	of_node_put(dwc3_np);

You're still leaking a reference in the of_property_read_string() error
path just above.

>  	return (ret < 0) ? USB_SPEED_UNKNOWN : ret;
>  }
>  
> @@ -339,6 +340,8 @@ static int dwc3_rtk_probe_dwc3_core(struct dwc3_rtk *rtk)
>  
>  	switch_usb2_role(rtk, rtk->cur_role);
>  
> +	platform_device_put(dwc3_pdev);
> +	of_node_put(dwc3_node);

Please keep the new line before return for readability.

>  	return 0;
>  
>  err_pdev_put:

Johan
Stanley Chang[昌育德] Nov. 14, 2023, 7:04 a.m. UTC | #5
Hi Johan,

> 
> On Tue, Nov 07, 2023 at 05:12:51PM +0800, Stanley Chang wrote:
> > When the function exits, the count should be decremented via
> > platform_device_put and of_node_put.
> 
> This isn't really a self-contained commit message (and your use of 'count' is
> too vague). You're also changing two functions in two different ways here.

I will modify the commit message.

> > Fixes: 34c200483569 ("usb: dwc3: add Realtek DHC RTD SoC dwc3 glue
> > layer driver")
> > Signed-off-by: Stanley Chang <stanley_chang@realtek.com>
> > ---
> >  drivers/usb/dwc3/dwc3-rtk.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
> > index 590028e8fdcb..9d6f2a8bd6ce 100644
> > --- a/drivers/usb/dwc3/dwc3-rtk.c
> > +++ b/drivers/usb/dwc3/dwc3-rtk.c
> > @@ -187,6 +187,7 @@ static enum usb_device_speed
> > __get_dwc3_maximum_speed(struct device_node *np)
> >
> >       ret = match_string(speed_names, ARRAY_SIZE(speed_names),
> > maximum_speed);
> >
> > +     of_node_put(dwc3_np);

I will fixed this.

Thanks,
Stanley

> You're still leaking a reference in the of_property_read_string() error path just
> above.
> 
> >       return (ret < 0) ? USB_SPEED_UNKNOWN : ret;  }
> >
> > @@ -339,6 +340,8 @@ static int dwc3_rtk_probe_dwc3_core(struct
> > dwc3_rtk *rtk)
> >
> >       switch_usb2_role(rtk, rtk->cur_role);
> >
> > +     platform_device_put(dwc3_pdev);
> > +     of_node_put(dwc3_node);
> 
> Please keep the new line before return for readability.
> 
> >       return 0;
> >
> >  err_pdev_put:
> 
> Johan
diff mbox series

Patch

diff --git a/drivers/usb/dwc3/dwc3-rtk.c b/drivers/usb/dwc3/dwc3-rtk.c
index 590028e8fdcb..9d6f2a8bd6ce 100644
--- a/drivers/usb/dwc3/dwc3-rtk.c
+++ b/drivers/usb/dwc3/dwc3-rtk.c
@@ -187,6 +187,7 @@  static enum usb_device_speed __get_dwc3_maximum_speed(struct device_node *np)
 
 	ret = match_string(speed_names, ARRAY_SIZE(speed_names), maximum_speed);
 
+	of_node_put(dwc3_np);
 	return (ret < 0) ? USB_SPEED_UNKNOWN : ret;
 }
 
@@ -339,6 +340,8 @@  static int dwc3_rtk_probe_dwc3_core(struct dwc3_rtk *rtk)
 
 	switch_usb2_role(rtk, rtk->cur_role);
 
+	platform_device_put(dwc3_pdev);
+	of_node_put(dwc3_node);
 	return 0;
 
 err_pdev_put: