[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20131107121316.GC10868@localhost>
Date: Thu, 7 Nov 2013 20:13:16 +0800
From: Fengguang Wu <fengguang.wu@...el.com>
To: David Howells <dhowells@...hat.com>
Cc: Al Viro <viro@...iv.linux.org.uk>, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [vfs] [ INFO: possible recursive locking detected ]
David,
Here is another bisect result.
commit 1247c74b4f3f3725a8bd8dc0bbd22baa2a9049ae
Author: David Howells <dhowells@...hat.com>
Date: Thu Sep 12 19:22:53 2013 +0100
VFS: Put a small type field into struct dentry::d_flags
Put a type field into struct dentry::d_flags to indicate if the dentry is one
of the following types that relate particularly to pathwalk:
Miss (negative dentry)
Directory
"Automount" directory (defective - no i_op->lookup())
Symlink
Other (regular, socket, fifo, device)
The type field is set to one of the first five types on a dentry by calls to
__d_instantiate() and d_obtain_alias() from information in the inode (if one is
given).
The type is cleared by dentry_unlink_inode() when it reconstitutes an existing
dentry as a negative dentry.
Accessors provided are:
d_set_type(dentry, type)
d_is_directory(dentry)
d_is_autodir(dentry)
d_is_symlink(dentry)
d_is_file(dentry)
d_is_negative(dentry)
d_is_positive(dentry)
A bunch of checks in pathname resolution switched to those.
Signed-off-by: David Howells <dhowells@...hat.com>
Signed-off-by: Al Viro <viro@...iv.linux.org.uk>
===================================================
PARENT COMMIT NOT CLEAN. LOOK OUT FOR WRONG BISECT!
===================================================
9 /kernel/x86_64-randconfig-c9-1107/50235cd9727c20b09967b5c060025eac9d0c80bb
create /kernel/x86_64-randconfig-c9-1107/50235cd9727c20b09967b5c060025eac9d0c80bb/boot-error-ids
update /kernel/x86_64-randconfig-c9-1107/f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c/boot-error-ids
+-------------------------------------------------+--------------+--------------+
| | 50235cd9727c | f0e07fb6dd3d |
+-------------------------------------------------+--------------+--------------+
| good_boots | 131 | |
| has_kernel_error_warning | 9 | 19 |
| BUG:kernel_early_hang_without_any_printk_output | 9 | |
| INFO:possible_recursive_locking_detected | 0 | 19 |
| BUG:spinlock_lockup_suspected_on_CPU | 0 | 19 |
+-------------------------------------------------+--------------+--------------+
[ 0.020984] Mount-cache hash table entries: 256
[ 0.022182]
[ 0.022487] =============================================
[ 0.026992] [ INFO: possible recursive locking detected ]
[ 0.027977] 3.12.0-00784-gf0e07fb #314 Not tainted
[ 0.028845] ---------------------------------------------
[ 0.030000] swapper/0 is trying to acquire lock:
[ 0.030000] (&sb->s_type->i_lock_key){+.+...}, at: [<ffffffff811bdb4c>] d_flags_for_inode+0x3c/0xd0
[ 0.030000]
[ 0.030000] but task is already holding lock:
[ 0.030000] (&sb->s_type->i_lock_key){+.+...}, at: [<ffffffff811c04c4>] d_instantiate+0x34/0x70
[ 0.030000]
[ 0.030000] other info that might help us debug this:
[ 0.030000] Possible unsafe locking scenario:
[ 0.030000]
[ 0.030000] CPU0
[ 0.030000] ----
[ 0.030000] lock(&sb->s_type->i_lock_key);
[ 0.030000] lock(&sb->s_type->i_lock_key);
[ 0.030000]
[ 0.030000] *** DEADLOCK ***
[ 0.030000]
[ 0.030000] May be due to missing lock nesting notation
[ 0.030000]
[ 0.030000] 2 locks held by swapper/0:
[ 0.030000] #0: (&type->s_umount_key/1){+.+...}, at: [<ffffffff811ab286>] sget+0x266/0x440
[ 0.030000] #1: (&sb->s_type->i_lock_key){+.+...}, at: [<ffffffff811c04c4>] d_instantiate+0x34/0x70
[ 0.030000]
[ 0.030000] stack backtrace:
[ 0.030000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0-00784-gf0e07fb #314
[ 0.030000] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[ 0.030000] ffffffff82c998d0 ffffffff82401c18 ffffffff81c21540 ffffffff82401ce0
[ 0.030000] ffffffff81111fb7 ffffffff824134c0 0000000000000000 ffffffff82401c50
[ 0.030000] ffffffff82413af8 ffffffff00000000 00000000c406e037 ffffffff824134c0
[ 0.030000] Call Trace:
[ 0.030000] [<ffffffff81c21540>] dump_stack+0x19/0x1b
[ 0.030000] [<ffffffff81111fb7>] __lock_acquire+0x12d7/0x1d60
[ 0.030000] [<ffffffff811129cc>] ? __lock_acquire+0x1cec/0x1d60
[ 0.030000] [<ffffffff81c2102f>] ? __slab_alloc.constprop.61+0x3dc/0x3fa
[ 0.030000] [<ffffffff8111394d>] lock_acquire+0x19d/0x220
[ 0.030000] [<ffffffff811bdb4c>] ? d_flags_for_inode+0x3c/0xd0
[ 0.030000] [<ffffffff81c34ccb>] _raw_spin_lock+0x3b/0x70
[ 0.030000] [<ffffffff811bdb4c>] ? d_flags_for_inode+0x3c/0xd0
[ 0.030000] [<ffffffff811bdb4c>] d_flags_for_inode+0x3c/0xd0
[ 0.030000] [<ffffffff811be44d>] __d_instantiate+0x1d/0xf0
[ 0.030000] [<ffffffff811c04cf>] d_instantiate+0x3f/0x70
[ 0.030000] [<ffffffff811c0662>] d_make_root+0x32/0x60
[ 0.030000] [<ffffffff811f3fe8>] sysfs_mount+0x178/0x220
[ 0.030000] [<ffffffff811ac0a3>] mount_fs+0x73/0x190
[ 0.030000] [<ffffffff811c98e5>] vfs_kern_mount+0x65/0xf0
[ 0.030000] [<ffffffff811cc4b4>] kern_mount_data+0x14/0x30
[ 0.030000] [<ffffffff827a9db2>] sysfs_init+0x54/0xb3
[ 0.030000] [<ffffffff827a8488>] mnt_init+0xcd/0x1d6
[ 0.030000] [<ffffffff827a8156>] vfs_caches_init+0x90/0x10e
[ 0.030000] [<ffffffff827abf74>] ? integrity_iintcache_init+0x23/0x38
[ 0.030000] [<ffffffff827aafe9>] ? security_init+0x35/0x47
[ 0.030000] [<ffffffff82784e98>] start_kernel+0x456/0x49e
[ 0.030000] [<ffffffff8278484a>] ? repair_env_string+0x5e/0x5e
[ 0.030000] [<ffffffff82784120>] ? early_idt_handlers+0x120/0x120
[ 0.030000] [<ffffffff82784543>] x86_64_start_reservations+0x2a/0x2c
[ 0.030000] [<ffffffff82784638>] x86_64_start_kernel+0xf3/0x102
git bisect start f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c 5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52 --
git bisect good 2751f2b0a96446b2301a56dcf3b24128ffb4c7d7 # 09:25 20+ 0 Merge 'ntb/ntb' into devel-cairo-x86_64-201311070512
git bisect good 4796e8af60ee7d2922386ef9fd4389d21e2c1665 # 10:26 20+ 4 Bluetooth: Make mgmt_write_scan_failed() return void
git bisect good cca34b785a21d220176038c45071ffe842e99fd3 # 10:52 20+ 2 Bluetooth: Remove link type check in hci_disconn_complete_evt()
git bisect good 004e8957280a32f7b54766531c064412bda45e48 # 11:36 20+ 2 convert the rest of binfmt_elf_fdpic to dump_emit()
git bisect bad b0d94facd7c81fae48e72f1e0b2a7e656ecde921 # 11:44 0- 2 exportfs: stop retrying once we race with rename/remove
git bisect good 50235cd9727c20b09967b5c060025eac9d0c80bb # 12:05 20+ 2 elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
git bisect bad 08196969532eee10cdeaa29fca37fa7a407b01ae # 12:11 0- 1 dcache: use IS_ROOT to decide where dentry is hashed
git bisect bad 7717bf21e4a5e1d371e313a4404635f4775961d9 # 12:16 1- 2 vfs: split out vfs_getattr_nosec
git bisect bad 520ef078eabdbe7eb6a33c1f56a65ac55d41e6ed # 12:24 2- 3 iget/iget5: don't bother with ->i_lock until we find a match
git bisect bad 1247c74b4f3f3725a8bd8dc0bbd22baa2a9049ae # 12:29 0- 4 VFS: Put a small type field into struct dentry::d_flags
git bisect good 50235cd9727c20b09967b5c060025eac9d0c80bb # 13:06 120+ 9 elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
git bisect bad f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c # 13:06 0- 19 Merge 'vfs/for-next' into devel-cairo-x86_64-201311070512
git bisect good e6eb46b3eee2c7211a56423dd026b88b9ce30ed5 # 13:21 120+ 9 Revert "VFS: Put a small type field into struct dentry::d_flags"
git bisect good be408cd3e1fef73e9408b196a79b9934697fe3b1 # 13:33 120+ 3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Thanks,
Fengguang
View attachment "dmesg-quantal-bens-2:20131107062028:x86_64-randconfig-c9-1107:3.12.0-00784-gf0e07fb:314" of type "text/plain" (17246 bytes)
Download attachment "bisect-f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c-x86_64-randconfig-c9-1107-INFO:-possible-recursive-locking-detected--91126.log" of type "application/octet-stream" (31501 bytes)
View attachment "config-3.12.0-00784-gf0e07fb" of type "text/plain" (76193 bytes)
_______________________________________________
LKP mailing list
LKP@...ux.intel.com
Powered by blists - more mailing lists