From: "Dave Young" <hidave.darkstar@gmail.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Greg KH <greg@kroah.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-scsi@vger.kernel.org, Kay Sievers <kay.sievers@vrfy.org>
Subject: Re: lockdep whine in 2.6.26-rc2-mm1
Date: Thu, 15 May 2008 13:47:02 +0800 [thread overview]
Message-ID: <a8e1da0805142247k2456234evb5ea2be59da135cb@mail.gmail.com> (raw)
In-Reply-To: <20080514162442.GO9324@parisc-linux.org>
On Thu, May 15, 2008 at 12:24 AM, Matthew Wilcox <matthew@wil.cx> wrote:
> On Wed, May 14, 2008 at 08:56:39AM -0700, Greg KH wrote:
>> On Wed, May 14, 2008 at 12:09:33AM -0700, Andrew Morton wrote:
>> >
>> > =============================================
>> > [ INFO: possible recursive locking detected ]
>> > 2.6.26-rc2-mm1 #15
>> > ---------------------------------------------
>> > modprobe/942 is trying to acquire lock:
>> > (&cls->mutex){--..}, at: [<ffffffff811b431e>] device_add+0x43d/0x57a
>> >
>> > but task is already holding lock:
>> > (&cls->mutex){--..}, at: [<ffffffff811b6787>] class_interface_register+0x48/0xbd
>> >
>> > other info that might help us debug this:
>> > 1 lock held by modprobe/942:
>> > #0: (&cls->mutex){--..}, at: [<ffffffff811b6787>] class_interface_register+0x48/0xbd
>> >
>> > stack backtrace:
>> > Pid: 942, comm: modprobe Not tainted 2.6.26-rc2-mm1 #15
>> >
>> > Call Trace:
>> > [<ffffffff81056be1>] __lock_acquire+0x90d/0xc50
>> > [<ffffffff8100c50f>] ? restore_args+0x0/0x30
>> > [<ffffffff811b431e>] ? device_add+0x43d/0x57a
>> > [<ffffffff81057276>] lock_acquire+0x91/0xb7
>> > [<ffffffff811b431e>] ? device_add+0x43d/0x57a
>> > [<ffffffff812b23ab>] mutex_lock_nested+0xf2/0x278
>> > [<ffffffff811b431e>] ? device_add+0x43d/0x57a
>> > [<ffffffff812b3acd>] ? _spin_unlock+0x23/0x28
>> > [<ffffffff811b431e>] device_add+0x43d/0x57a
>> > [<ffffffff811b4471>] device_register+0x16/0x1b
>> > [<ffffffff811b4555>] device_create+0xdf/0x112
>> > [<ffffffff81055fdc>] ? trace_hardirqs_on+0xd/0xf
>> > [<ffffffff81055fdc>] ? trace_hardirqs_on+0xd/0xf
>> > [<ffffffff812b1fe1>] ? mutex_unlock+0x9/0xb
>> > [<ffffffff811b79b7>] ? kobj_map+0x113/0x124
>> > [<ffffffff810ac0f5>] ? exact_lock+0x0/0x14
>> > [<ffffffff810abd09>] ? exact_match+0x0/0x9
>> > [<ffffffffa00ec448>] :sg:sg_add+0x2a3/0x3bd
>> > [<ffffffff811b67b6>] class_interface_register+0x77/0xbd
>> > [<ffffffffa005d869>] :scsi_mod:scsi_register_interface+0x11/0x13
>> > [<ffffffffa00d50a3>] :sg:init_sg+0xa3/0x155
>> > [<ffffffff8105ea8f>] sys_init_module+0x1823/0x197a
>> > [<ffffffff810c45bc>] ? seq_release+0x0/0x56
>> > [<ffffffff8100bebb>] system_call_after_swapgs+0x7b/0x80
>>
>> I'm guessing that this is due to David's "change the semaphore to a
>> mutex" patch that you have in your tree, but I refused to take as I was
>> worried about just this issue :)
>
> Hm, I thought I saw the same patch from Arjan months ago ... anyway.
>
> class_interface_register() (at least in -rc2) holds &parent->sem (ie the
> result of calling class_get() on the class) around calling ->add_dev.
> The class in this case is the sg_sysfs_class, so it's calling sg_add().
> sg_add() calls device_create() which calls device_add() which acquires
> the &dev->class->sem. The class in this case would _also_ seem to be
> sg_sysfs_class.
>
> So why doesn't this deadlock today?
The classes are different here, first sdev_class, then sg_sysfs_class
Regards
dave
next prev parent reply other threads:[~2008-05-15 5:47 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-14 7:09 lockdep whine in 2.6.26-rc2-mm1 Andrew Morton
2008-05-14 15:56 ` Greg KH
2008-05-14 16:24 ` Matthew Wilcox
2008-05-15 5:47 ` Dave Young [this message]
2008-05-15 9:01 ` Dave Young
2008-05-15 11:52 ` Matthew Wilcox
2008-05-17 10:14 ` Dave Young
2008-05-19 5:20 ` Dave Young
2008-05-19 7:56 ` Dave Young
2008-05-19 10:23 ` Matthew Wilcox
2008-05-20 1:27 ` Dave Young
2008-05-20 1:51 ` Matthew Wilcox
2008-05-20 18:07 ` Greg KH
2008-05-21 3:20 ` Dave Young
2008-05-21 4:38 ` Greg KH
2008-05-15 5:50 ` Dave Young
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=a8e1da0805142247k2456234evb5ea2be59da135cb@mail.gmail.com \
--to=hidave.darkstar@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=greg@kroah.com \
--cc=kay.sievers@vrfy.org \
--cc=linux-scsi@vger.kernel.org \
--cc=matthew@wil.cx \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox