linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] serial: mxs-auart: put the device when exit or error
  2012-09-07  2:43   ` Shawn Guo
@ 2012-09-07  2:33     ` Huang Shijie
  2012-09-07  3:14       ` Shawn Guo
  2012-09-10 23:00       ` Greg KH
  2012-09-07  2:48     ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
  1 sibling, 2 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07  2:33 UTC (permalink / raw)
  To: gregkh
  Cc: alan, linux-serial, linux-arm-kernel, linux-kernel, shawn.guo,
	Huang Shijie

We call the get_device() in the mxs_auart_probe().
For the balance of the reference count, we should put the
device in the mxs_auart_remove() or in the error path of
probe.

Signed-off-by: Huang Shijie <b32955@freescale.com>
---
 drivers/tty/serial/mxs-auart.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 3a667ee..203e512 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -781,6 +781,7 @@ out_free_irq:
 	auart_port[pdev->id] = NULL;
 	free_irq(s->irq, s);
 out_free_clk:
+	put_device(s->dev);
 	clk_put(s->clk);
 out_free:
 	kfree(s);
@@ -796,6 +797,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
 
 	auart_port[pdev->id] = NULL;
 
+	put_device(s->dev);
 	clk_put(s->clk);
 	free_irq(s->irq, s);
 	kfree(s);
-- 
1.7.0.4



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
@ 2012-09-07  2:38 Huang Shijie
  2012-09-07  2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
  2012-09-07  2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
  0 siblings, 2 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07  2:38 UTC (permalink / raw)
  To: gregkh
  Cc: alan, linux-serial, linux-kernel, shawn.guo, linux-arm-kernel,
	Huang Shijie

After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
So the following line will not take effect.
       ................................................................
 	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
 			u->membase + AUART_INTR_CLR);
       ................................................................

To fix this issue, the patch moves this gate-off line to
the end of setting registers.

Signed-off-by: Huang Shijie <shijie8@gmail.com>
---
 drivers/tty/serial/mxs-auart.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index dafeef2..ea5f888 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
 
 	writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
 
-	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
-
 	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
 			u->membase + AUART_INTR_CLR);
 
+	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
+
 	clk_disable_unprepare(s->clk);
 }
 
-- 
1.7.4.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
  2012-09-07  2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
@ 2012-09-07  2:38 ` Huang Shijie
  2012-09-07  2:43   ` Shawn Guo
  2012-09-07  2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
  1 sibling, 1 reply; 9+ messages in thread
From: Huang Shijie @ 2012-09-07  2:38 UTC (permalink / raw)
  To: gregkh
  Cc: alan, linux-serial, linux-kernel, shawn.guo, linux-arm-kernel,
	Huang Shijie

We call the get_device() in the mxs_auart_probe().
For the balance of the reference count, we should put the
device in the mxs_auart_remove().

Signed-off-by: Huang Shijie <shijie8@gmail.com>
---
 drivers/tty/serial/mxs-auart.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index ea5f888..6898413 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
 
 	auart_port[pdev->id] = NULL;
 
+	put_device(s->dev);
 	clk_put(s->clk);
 	free_irq(s->irq, s);
 	kfree(s);
-- 
1.7.4.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
  2012-09-07  2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
  2012-09-07  2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
@ 2012-09-07  2:38 ` Shawn Guo
  2012-09-07  2:43   ` Huang Shijie
  1 sibling, 1 reply; 9+ messages in thread
From: Shawn Guo @ 2012-09-07  2:38 UTC (permalink / raw)
  To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel

On Thu, Sep 06, 2012 at 10:38:40PM -0400, Huang Shijie wrote:
> After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
> So the following line will not take effect.
>        ................................................................
>  	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>  			u->membase + AUART_INTR_CLR);
>        ................................................................
> 
> To fix this issue, the patch moves this gate-off line to
> the end of setting registers.
> 
> Signed-off-by: Huang Shijie <shijie8@gmail.com>

Acked-by: Shawn Guo <shawn.guo@linaro.org>

Are you experiencing any user visible problem with this bug?

Regards,
Shawn

> ---
>  drivers/tty/serial/mxs-auart.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index dafeef2..ea5f888 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
>  
>  	writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
>  
> -	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
> -
>  	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>  			u->membase + AUART_INTR_CLR);
>  
> +	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
> +
>  	clk_disable_unprepare(s->clk);
>  }
>  
> -- 
> 1.7.4.4
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
  2012-09-07  2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
@ 2012-09-07  2:43   ` Shawn Guo
  2012-09-07  2:33     ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
  2012-09-07  2:48     ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
  0 siblings, 2 replies; 9+ messages in thread
From: Shawn Guo @ 2012-09-07  2:43 UTC (permalink / raw)
  To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel

On Thu, Sep 06, 2012 at 10:38:41PM -0400, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove().
> 
> Signed-off-by: Huang Shijie <shijie8@gmail.com>
> ---
>  drivers/tty/serial/mxs-auart.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index ea5f888..6898413 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>  
>  	auart_port[pdev->id] = NULL;
>  
> +	put_device(s->dev);
>  	clk_put(s->clk);
>  	free_irq(s->irq, s);
>  	kfree(s);

So the error path of probe needs function fixing too, right?

-- 
Regards,
Shawn

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] serial: mxs-auart: fix the wrong setting order
  2012-09-07  2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
@ 2012-09-07  2:43   ` Huang Shijie
  0 siblings, 0 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07  2:43 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Huang Shijie, gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel

于 2012年09月07日 10:38, Shawn Guo 写道:
> On Thu, Sep 06, 2012 at 10:38:40PM -0400, Huang Shijie wrote:
>> After set the AUART_CTRL0_CLKGATE, the UART will gate all the clocks off.
>> So the following line will not take effect.
>>         ................................................................
>>   	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>>   			u->membase + AUART_INTR_CLR);
>>         ................................................................
>>
>> To fix this issue, the patch moves this gate-off line to
>> the end of setting registers.
>>
>> Signed-off-by: Huang Shijie<shijie8@gmail.com>
> Acked-by: Shawn Guo<shawn.guo@linaro.org>
>
> Are you experiencing any user visible problem with this bug?
>
I do not experience any user problem.
I found this bug when i tried to add DMA support for MXS-AUART.

Best Regards
Huang Shijie


> Regards,
> Shawn
>
>> ---
>>   drivers/tty/serial/mxs-auart.c |    4 ++--
>>   1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
>> index dafeef2..ea5f888 100644
>> --- a/drivers/tty/serial/mxs-auart.c
>> +++ b/drivers/tty/serial/mxs-auart.c
>> @@ -457,11 +457,11 @@ static void mxs_auart_shutdown(struct uart_port *u)
>>
>>   	writel(AUART_CTRL2_UARTEN, u->membase + AUART_CTRL2_CLR);
>>
>> -	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
>> -
>>   	writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
>>   			u->membase + AUART_INTR_CLR);
>>
>> +	writel(AUART_CTRL0_CLKGATE, u->membase + AUART_CTRL0_SET);
>> +
>>   	clk_disable_unprepare(s->clk);
>>   }
>>
>> -- 
>> 1.7.4.4
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-serial" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe()
  2012-09-07  2:43   ` Shawn Guo
  2012-09-07  2:33     ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
@ 2012-09-07  2:48     ` Huang Shijie
  1 sibling, 0 replies; 9+ messages in thread
From: Huang Shijie @ 2012-09-07  2:48 UTC (permalink / raw)
  To: Shawn Guo
  Cc: Huang Shijie, gregkh, alan, linux-serial, linux-kernel, linux-arm-kernel

于 2012年09月07日 10:43, Shawn Guo 写道:
> On Thu, Sep 06, 2012 at 10:38:41PM -0400, Huang Shijie wrote:
>> We call the get_device() in the mxs_auart_probe().
>> For the balance of the reference count, we should put the
>> device in the mxs_auart_remove().
>>
>> Signed-off-by: Huang Shijie<shijie8@gmail.com>
>> ---
>>   drivers/tty/serial/mxs-auart.c |    1 +
>>   1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
>> index ea5f888..6898413 100644
>> --- a/drivers/tty/serial/mxs-auart.c
>> +++ b/drivers/tty/serial/mxs-auart.c
>> @@ -796,6 +796,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>>
>>   	auart_port[pdev->id] = NULL;
>>
>> +	put_device(s->dev);
>>   	clk_put(s->clk);
>>   	free_irq(s->irq, s);
>>   	kfree(s);
> So the error path of probe needs function fixing too, right?
>
OK.

Send out the new version right now.


Huang Shijie


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] serial: mxs-auart: put the device when exit or error
  2012-09-07  2:33     ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
@ 2012-09-07  3:14       ` Shawn Guo
  2012-09-10 23:00       ` Greg KH
  1 sibling, 0 replies; 9+ messages in thread
From: Shawn Guo @ 2012-09-07  3:14 UTC (permalink / raw)
  To: Huang Shijie; +Cc: gregkh, alan, linux-serial, linux-arm-kernel, linux-kernel

On Fri, Sep 07, 2012 at 10:33:07AM +0800, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove() or in the error path of
> probe.
> 
> Signed-off-by: Huang Shijie <b32955@freescale.com>

Acked-by: Shawn Guo <shawn.guo@linaro.org>

> ---
>  drivers/tty/serial/mxs-auart.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index 3a667ee..203e512 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -781,6 +781,7 @@ out_free_irq:
>  	auart_port[pdev->id] = NULL;
>  	free_irq(s->irq, s);
>  out_free_clk:
> +	put_device(s->dev);
>  	clk_put(s->clk);
>  out_free:
>  	kfree(s);
> @@ -796,6 +797,7 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
>  
>  	auart_port[pdev->id] = NULL;
>  
> +	put_device(s->dev);
>  	clk_put(s->clk);
>  	free_irq(s->irq, s);
>  	kfree(s);
> -- 
> 1.7.0.4
> 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] serial: mxs-auart: put the device when exit or error
  2012-09-07  2:33     ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
  2012-09-07  3:14       ` Shawn Guo
@ 2012-09-10 23:00       ` Greg KH
  1 sibling, 0 replies; 9+ messages in thread
From: Greg KH @ 2012-09-10 23:00 UTC (permalink / raw)
  To: Huang Shijie
  Cc: alan, linux-serial, linux-arm-kernel, linux-kernel, shawn.guo

On Fri, Sep 07, 2012 at 10:33:07AM +0800, Huang Shijie wrote:
> We call the get_device() in the mxs_auart_probe().
> For the balance of the reference count, we should put the
> device in the mxs_auart_remove() or in the error path of
> probe.
> 
> Signed-off-by: Huang Shijie <b32955@freescale.com>
> ---
>  drivers/tty/serial/mxs-auart.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)

I already applied the previous version, so can you make up a patch
against the tty-next tree that fixes it up properly based on this patch?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-09-10 23:02 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-07  2:38 [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Huang Shijie
2012-09-07  2:38 ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
2012-09-07  2:43   ` Shawn Guo
2012-09-07  2:33     ` [PATCH] serial: mxs-auart: put the device when exit or error Huang Shijie
2012-09-07  3:14       ` Shawn Guo
2012-09-10 23:00       ` Greg KH
2012-09-07  2:48     ` [PATCH 2/2] serial: mxs-auart: put the device in mxs_auart_probe() Huang Shijie
2012-09-07  2:38 ` [PATCH 1/2] serial: mxs-auart: fix the wrong setting order Shawn Guo
2012-09-07  2:43   ` Huang Shijie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).