Messages in this thread | | | Subject | Re: 2.6.17-rc5-mm1 | From | Arjan van de Ven <> | Date | Tue, 30 May 2006 21:04:50 +0200 |
| |
On Tue, 2006-05-30 at 20:39 +0200, Michal Piotrowski wrote: > Hi, > > On 30/05/06, Andrew Morton <akpm@osdl.org> wrote: > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.17-rc5/2.6.17-rc5-mm1/ > > > > I get this on 2.6.17-rc5-mm1 + hot fixes + Arjan's net/ipv4/igmp.c patch. > > May 30 20:25:56 ltg01-fedora kernel: > May 30 20:25:56 ltg01-fedora kernel: > ===================================================== > May 30 20:25:56 ltg01-fedora kernel: [ BUG: possible circular locking > deadlock detected! ] > May 30 20:25:56 ltg01-fedora kernel: > ----------------------------------------------------- > May 30 20:25:56 ltg01-fedora kernel: umount/2322 is trying to acquire lock: > May 30 20:25:56 ltg01-fedora kernel: (sb_security_lock){--..}, at: > [<c01d6400>] selinux_sb_free_security+0x17/0x4e
ok so selinux_complete_init() does spin_lock(&sb_security_lock); next_sb: if (!list_empty(&superblock_security_head)) { struct superblock_security_struct *sbsec = list_entry(superblock_security_head.next, struct superblock_security_struct, list); struct super_block *sb = sbsec->sb; spin_lock(&sb_lock); sb->s_count++; spin_unlock(&sb_lock); spin_unlock(&sb_security_lock);
nesting sb_lock inside sb_security_lock
while
put_super() takes the sb_lock, then calls __put_super() which calls selinux_sb_free_security which calls superblock_free_security() which takes sb_security_lock which means the nesting is opposite.
textbook AB-BA deadlock - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |