2009-07-01 06:53:33

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH] MFD: ezx-pcap, fix lock imbalance

There is an omitted unlock in pcap_adc_irq ISR on one fail path. Fix that.

Signed-off-by: Jiri Slaby <[email protected]>
---
drivers/mfd/ezx-pcap.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 671a7ef..c1de4af 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -238,8 +238,10 @@ static irqreturn_t pcap_adc_irq(int irq, void *_pcap)
mutex_lock(&pcap->adc_mutex);
req = pcap->adc_queue[pcap->adc_head];

- if (WARN(!req, KERN_WARNING "adc irq without pending request\n"))
+ if (WARN(!req, KERN_WARNING "adc irq without pending request\n")) {
+ mutex_unlock(&pcap->adc_mutex);
return IRQ_HANDLED;
+ }

/* read requested channels results */
ezx_pcap_read(pcap, PCAP_REG_ADC, &tmp);
--
1.6.3.2


2009-07-01 07:04:45

by Daniel Ribeiro

[permalink] [raw]
Subject: Re: [PATCH] MFD: ezx-pcap, fix lock imbalance

Hi Jiri,

Em Qua, 2009-07-01 às 08:53 +0200, Jiri Slaby escreveu:
> There is an omitted unlock in pcap_adc_irq ISR on one fail path. Fix that.
>
> Signed-off-by: Jiri Slaby <[email protected]>

I would be happy to ack this, however, you are late. ;)

http://patchwork.kernel.org/patch/32002/

Samuel seems to be unreachable ATM, last email I have from him is from
June 16. :(

> ---
> drivers/mfd/ezx-pcap.c | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index 671a7ef..c1de4af 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -238,8 +238,10 @@ static irqreturn_t pcap_adc_irq(int irq, void *_pcap)
> mutex_lock(&pcap->adc_mutex);
> req = pcap->adc_queue[pcap->adc_head];
>
> - if (WARN(!req, KERN_WARNING "adc irq without pending request\n"))
> + if (WARN(!req, KERN_WARNING "adc irq without pending request\n")) {
> + mutex_unlock(&pcap->adc_mutex);
> return IRQ_HANDLED;
> + }
>
> /* read requested channels results */
> ezx_pcap_read(pcap, PCAP_REG_ADC, &tmp);

--
Daniel Ribeiro


Attachments:
signature.asc (197.00 B)
Esta ? uma parte de mensagem assinada digitalmente

2009-07-01 07:34:07

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH] MFD: ezx-pcap, fix lock imbalance

On 07/01/2009 09:04 AM, Daniel Ribeiro wrote:
> Em Qua, 2009-07-01 às 08:53 +0200, Jiri Slaby escreveu:
>> There is an omitted unlock in pcap_adc_irq ISR on one fail path. Fix that.
>>
>> Signed-off-by: Jiri Slaby <[email protected]>
>
> I would be happy to ack this, however, you are late. ;)

Heh :), nevermind.

2009-07-01 08:07:32

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH] MFD: ezx-pcap, fix lock imbalance

Hi Daniel,

On Wed, Jul 01, 2009 at 04:04:31AM -0300, Daniel Ribeiro wrote:
> Hi Jiri,
>
> Em Qua, 2009-07-01 ?s 08:53 +0200, Jiri Slaby escreveu:
> > There is an omitted unlock in pcap_adc_irq ISR on one fail path. Fix that.
> >
> > Signed-off-by: Jiri Slaby <[email protected]>
>
> I would be happy to ack this, however, you are late. ;)
>
> http://patchwork.kernel.org/patch/32002/
>
> Samuel seems to be unreachable ATM, last email I have from him is from
> June 16. :(
Sorry for the delay, I was travelling. I'll be going through my mail backlog
today.

Cheers,
Samuel.


> > ---
> > drivers/mfd/ezx-pcap.c | 4 +++-
> > 1 files changed, 3 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> > index 671a7ef..c1de4af 100644
> > --- a/drivers/mfd/ezx-pcap.c
> > +++ b/drivers/mfd/ezx-pcap.c
> > @@ -238,8 +238,10 @@ static irqreturn_t pcap_adc_irq(int irq, void *_pcap)
> > mutex_lock(&pcap->adc_mutex);
> > req = pcap->adc_queue[pcap->adc_head];
> >
> > - if (WARN(!req, KERN_WARNING "adc irq without pending request\n"))
> > + if (WARN(!req, KERN_WARNING "adc irq without pending request\n")) {
> > + mutex_unlock(&pcap->adc_mutex);
> > return IRQ_HANDLED;
> > + }
> >
> > /* read requested channels results */
> > ezx_pcap_read(pcap, PCAP_REG_ADC, &tmp);
>
> --
> Daniel Ribeiro



--
Intel Open Source Technology Centre
http://oss.intel.com/