All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josh Wu <josh.wu@atmel.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: nicolas.ferre@atmel.com, plagnioj@jcrosoft.com,
	linux-mtd@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, dedekind1@gmail.com
Subject: Re: [PATCH] mtd: atmel_nand: fix bug driver will in a dead lock if no nand detected
Date: Thu, 7 Nov 2013 18:26:39 +0800	[thread overview]
Message-ID: <527B6ADF.1090201@atmel.com> (raw)
In-Reply-To: <20131107083932.GJ3805@norris.computersforpeace.net>

Hi, Brian

On 11/7/2013 4:39 PM, Brian Norris wrote:
> Hi Josh,
>
> On Tue, Nov 05, 2013 at 05:59:07PM +0800, Josh Wu wrote:
>> In the atmel driver probe function, the code shows like following:
>>    atmel_nand_probe(...) {
>>          ...
>>
>>    err_nand_ioremap:
>>          platform_driver_unregister(&atmel_nand_nfc_driver);
>>          return res;
>>    }
>>
>> If no nand flash detected, the driver probe function will goto
>> err_nand_ioremap label.
>> Then platform_driver_unregister() will be called. It will get the
>> lock of atmel_nand device since it is parent of nfc_device. The
>> problem is the lock is already hold by atmel_nand_probe itself.
>> So system will be in a dead lock.
>>
>> This patch just simply removed to platform_driver_unregister() call.
>> When atmel_nand driver is quit the platform_driver_unregister() will
>> be called in atmel_nand_remove().
> The real key, here, is that the platform-driver probe() has no business
> un-registering another driver, right?

right.

> Shouldn't both drivers just be
> registered/unregistered in the module init/exit, and not in probe()?

currently the NFC driver is registered in the beginning of nand probe 
function. After NFC driver is initialized, the rest of the nand probe 
function
will check the NFC driver status.
I am not sure it is proper to registered another driver in a probe().

>
> Also, should this be marked for -stable?

Shouldn't cc to stable after the patch is merged in mtd mail list?

Best Regards,
Josh Wu

>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>>   drivers/mtd/nand/atmel_nand.c |    1 -
>>   1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
>> index ef9c9f5..469d4e2 100644
>> --- a/drivers/mtd/nand/atmel_nand.c
>> +++ b/drivers/mtd/nand/atmel_nand.c
>> @@ -2142,7 +2142,6 @@ err_no_card:
>>   	if (host->dma_chan)
>>   		dma_release_channel(host->dma_chan);
>>   err_nand_ioremap:
>> -	platform_driver_unregister(&atmel_nand_nfc_driver);
>>   	return res;
>>   }
>>   
> Brian

WARNING: multiple messages have this Message-ID (diff)
From: josh.wu@atmel.com (Josh Wu)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] mtd: atmel_nand: fix bug driver will in a dead lock if no nand detected
Date: Thu, 7 Nov 2013 18:26:39 +0800	[thread overview]
Message-ID: <527B6ADF.1090201@atmel.com> (raw)
In-Reply-To: <20131107083932.GJ3805@norris.computersforpeace.net>

Hi, Brian

On 11/7/2013 4:39 PM, Brian Norris wrote:
> Hi Josh,
>
> On Tue, Nov 05, 2013 at 05:59:07PM +0800, Josh Wu wrote:
>> In the atmel driver probe function, the code shows like following:
>>    atmel_nand_probe(...) {
>>          ...
>>
>>    err_nand_ioremap:
>>          platform_driver_unregister(&atmel_nand_nfc_driver);
>>          return res;
>>    }
>>
>> If no nand flash detected, the driver probe function will goto
>> err_nand_ioremap label.
>> Then platform_driver_unregister() will be called. It will get the
>> lock of atmel_nand device since it is parent of nfc_device. The
>> problem is the lock is already hold by atmel_nand_probe itself.
>> So system will be in a dead lock.
>>
>> This patch just simply removed to platform_driver_unregister() call.
>> When atmel_nand driver is quit the platform_driver_unregister() will
>> be called in atmel_nand_remove().
> The real key, here, is that the platform-driver probe() has no business
> un-registering another driver, right?

right.

> Shouldn't both drivers just be
> registered/unregistered in the module init/exit, and not in probe()?

currently the NFC driver is registered in the beginning of nand probe 
function. After NFC driver is initialized, the rest of the nand probe 
function
will check the NFC driver status.
I am not sure it is proper to registered another driver in a probe().

>
> Also, should this be marked for -stable?

Shouldn't cc to stable after the patch is merged in mtd mail list?

Best Regards,
Josh Wu

>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>>   drivers/mtd/nand/atmel_nand.c |    1 -
>>   1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
>> index ef9c9f5..469d4e2 100644
>> --- a/drivers/mtd/nand/atmel_nand.c
>> +++ b/drivers/mtd/nand/atmel_nand.c
>> @@ -2142,7 +2142,6 @@ err_no_card:
>>   	if (host->dma_chan)
>>   		dma_release_channel(host->dma_chan);
>>   err_nand_ioremap:
>> -	platform_driver_unregister(&atmel_nand_nfc_driver);
>>   	return res;
>>   }
>>   
> Brian

  reply	other threads:[~2013-11-07 10:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-05  9:59 [PATCH] mtd: atmel_nand: fix bug driver will in a dead lock if no nand detected Josh Wu
2013-11-05  9:59 ` Josh Wu
2013-11-07  8:39 ` Brian Norris
2013-11-07  8:39   ` Brian Norris
2013-11-07 10:26   ` Josh Wu [this message]
2013-11-07 10:26     ` Josh Wu
2013-11-07 10:55     ` Nicolas Ferre
2013-11-07 10:55       ` Nicolas Ferre
2013-11-07 18:09     ` Brian Norris
2013-11-07 18:09       ` Brian Norris
2013-11-08  3:46       ` Josh Wu
2013-11-08  3:46         ` Josh Wu
2013-11-13  0:10         ` Brian Norris
2013-11-13  0:10           ` Brian Norris
2013-11-13  3:26           ` Josh Wu
2013-11-13  3:26             ` Josh Wu
2013-11-13  8:44             ` Brian Norris
2013-11-13  8:44               ` Brian Norris
2013-11-13 10:33               ` Nicolas Ferre
2013-11-13 10:33                 ` Nicolas Ferre
2013-11-07 18:43 ` Brian Norris
2013-11-07 18:43   ` Brian Norris

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=527B6ADF.1090201@atmel.com \
    --to=josh.wu@atmel.com \
    --cc=computersforpeace@gmail.com \
    --cc=dedekind1@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.