[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150306233907.GF3556@wfg-t540p.sh.intel.com>
Date: Sat, 7 Mar 2015 07:39:07 +0800
From: Fengguang Wu <fengguang.wu@...el.com>
To: David Howells <dhowells@...hat.com>
Cc: fengguang.wu@...el.com, LKP <lkp@...org>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [VFS] WARNING: CPU: 0 PID: 151 at fs/dcache.c:406 dput()
Greetings,
0day kernel testing robot got the below dmesg and the first bad commit is
git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs file-pin-devel
commit 692ddb6c6808db7b70678b4cc3332781625c65f8
Author: David Howells <dhowells@...hat.com>
AuthorDate: Thu Mar 5 14:09:22 2015 +0000
Commit: David Howells <dhowells@...hat.com>
CommitDate: Fri Mar 6 15:25:07 2015 +0000
VFS: Impose ordering on accesses of d_inode and d_flags
Impose ordering on accesses of d_inode and d_flags to avoid the need to do
this:
if (!dentry->d_inode || d_is_negative(dentry)) {
when this:
if (d_is_negative(dentry)) {
should suffice.
This check is especially problematic if a dentry can have its type field set
to something other than DENTRY_MISS_TYPE when d_inode is NULL (as in
unionmount).
What we really need to do is stick a write barrier between setting d_inode and
setting d_flags and a read barrier between reading d_flags and reading
d_inode.
Signed-off-by: David Howells <dhowells@...hat.com>
+----------------------------------------------+------------+------------+------------+
| | 1dc0c0acc4 | 692ddb6c68 | 448291320b |
+----------------------------------------------+------------+------------+------------+
| boot_successes | 60 | 0 | 0 |
| boot_failures | 0 | 20 | 12 |
| WARNING:at_fs/dcache.c:#dput() | 0 | 20 | 12 |
| WARNING:at_fs/dcache.c:#d_lru_shrink_move() | 0 | 20 | 9 |
| WARNING:at_fs/dcache.c:#shrink_dentry_list() | 0 | 20 | 9 |
| BUG:unable_to_handle_kernel | 0 | 20 | 9 |
| Oops | 0 | 20 | 9 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 20 | 9 |
| backtrace:do_unlinkat | 0 | 20 | 9 |
| backtrace:SyS_unlink | 0 | 20 | 9 |
| backtrace:do_mount | 0 | 20 | 9 |
| backtrace:SyS_mount | 0 | 20 | 9 |
| backtrace:do_rmdir | 0 | 0 | 3 |
| backtrace:SyS_rmdir | 0 | 0 | 3 |
+----------------------------------------------+------------+------------+------------+
/bin/sh: /proc/self/fd/9: No such file or directory
[ 37.852881] sock: process `trinity-main' is using obsolete setsockopt SO_BSDCOMPAT
[ 86.942666] ------------[ cut here ]------------
[ 86.947109] WARNING: CPU: 0 PID: 151 at fs/dcache.c:406 dput+0x1af/0x23d()
[ 86.948285] CPU: 0 PID: 151 Comm: shutdown Not tainted 4.0.0-rc1-00164-g692ddb6 #6
[ 86.949278] 0000000000000009 ffff880013be7de8 ffffffff81527be5 ffffffff810e02e9
[ 86.954376] 0000000000000000 ffff880013be7e28 ffffffff810a558a ffff880013be7e18
[ 86.955433] ffffffff8118d3dc ffff8800113a4d50 ffff8800113a4dd0 0000000000000000
[ 86.956428] Call Trace:
[ 86.956766] [<ffffffff81527be5>] dump_stack+0x4f/0x7b
[ 86.957441] [<ffffffff810e02e9>] ? console_unlock+0x398/0x3c7
[ 86.958234] [<ffffffff810a558a>] warn_slowpath_common+0x9c/0xb6
[ 86.959054] [<ffffffff8118d3dc>] ? dput+0x1af/0x23d
[ 86.959739] [<ffffffff810a566f>] warn_slowpath_null+0x1a/0x1c
[ 86.960506] [<ffffffff8118d3dc>] dput+0x1af/0x23d
[ 86.961110] [<ffffffff81187477>] do_unlinkat+0x137/0x269
[ 86.961835] [<ffffffff8152f796>] ? ret_from_sys_call+0x24/0x5f
[ 86.962664] [<ffffffff810d817d>] ? trace_hardirqs_on_caller+0x191/0x1ad
[ 86.963499] [<ffffffff8121e1ab>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[ 86.964320] [<ffffffff811875ea>] SyS_unlink+0x16/0x18
[ 86.965104] [<ffffffff8152f76d>] system_call_fastpath+0x16/0x1b
[ 86.966067] ---[ end trace ec83e162d3687f78 ]---
[ 86.999251] rc.local (128) used greatest stack depth: 13728 bytes left
git bisect start 448291320bc651867eee7513873ccad4f6d4aa08 13a7a6ac0a11197edcd0f756a035f472b42cdf8b --
git bisect good 791b19cb9cca1266c1ad4a63e521e9f76f7825b9 # 00:29 20+ 0 Merge 'block/blk-polled-io' into devel-cairo-rand-201503062346
git bisect bad 4cb456361b7b19e93abfcdbecf519c7366aec44d # 00:35 0- 2 Merge 'dhowells-fs/file-pin' into devel-cairo-rand-201503062346
git bisect bad f0386755652a0bef81e2980e0ba7147094383d7b # 00:40 0- 7 VFS: (Scripted) Convert ->d_inode to d_inode() in fs/ncpfs/
git bisect bad eed88f7305fd820023b18f62275b5a9d072ce81c # 00:54 0- 20 VFS: (Scripted) Convert ->d_inode to d_inode() in fs/coda/
git bisect bad 692ddb6c6808db7b70678b4cc3332781625c65f8 # 01:09 0- 10 VFS: Impose ordering on accesses of d_inode and d_flags
git bisect good ab14d7bf58701a71e4d5fa4a35ae1be314815507 # 01:14 20+ 0 VFS: Fix up missed bits of reiserfs to use d_inode()
git bisect good abd729c4342d698950473b6be359e73111982c02 # 01:24 20+ 0 VFS: Fix up some ->d_inode accesses in the chelsio driver
git bisect good dabd8775d19de85a0eeacc08804608100056755f # 01:26 20+ 0 NFS: Don't use d_inode as a variable name
git bisect good 1dc0c0acc45f01542179009e73e3965870917bd2 # 01:34 20+ 0 VFS: Add owner-filesystem positive/negative dentry checks
# first bad commit: [692ddb6c6808db7b70678b4cc3332781625c65f8] VFS: Impose ordering on accesses of d_inode and d_flags
git bisect good 1dc0c0acc45f01542179009e73e3965870917bd2 # 01:36 60+ 0 VFS: Add owner-filesystem positive/negative dentry checks
# extra tests with DEBUG_INFO
git bisect bad 692ddb6c6808db7b70678b4cc3332781625c65f8 # 01:41 0- 1 VFS: Impose ordering on accesses of d_inode and d_flags
# extra tests on HEAD of linux-devel/devel-cairo-rand-201503062346
git bisect bad 448291320bc651867eee7513873ccad4f6d4aa08 # 01:41 0- 12 0day head guard for 'devel-cairo-rand-201503062346'
# extra tests on tree/branch dhowells-fs/file-pin-devel
git bisect bad 692ddb6c6808db7b70678b4cc3332781625c65f8 # 01:47 0- 20 VFS: Impose ordering on accesses of d_inode and d_flags
# extra tests with first bad commit reverted
# extra tests on tree/branch linus/master
git bisect good 99aedde0869ce194539166ac5a4d2e1a20995348 # 01:59 60+ 0 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
# extra tests on tree/branch next/master
git bisect good 28855005be1d6a0a041de46fd2e61da2b796abff # 02:05 60+ 0 Add linux-next specific files for 20150306
This script may reproduce the error.
----------------------------------------------------------------------------
#!/bin/bash
kernel=$1
initrd=quantal-core-x86_64.cgz
wget --no-clobber https://github.com/fengguang/reproduce-kernel-bug/raw/master/initrd/$initrd
kvm=(
qemu-system-x86_64
-cpu kvm64
-enable-kvm
-kernel $kernel
-initrd $initrd
-m 320
-smp 2
-net nic,vlan=1,model=e1000
-net user,vlan=1
-boot order=nc
-no-reboot
-watchdog i6300esb
-rtc base=localtime
-serial stdio
-display none
-monitor null
)
append=(
hung_task_panic=1
earlyprintk=ttyS0,115200
rd.udev.log-priority=err
systemd.log_target=journal
systemd.log_level=warning
debug
apic=debug
sysrq_always_enabled
rcupdate.rcu_cpu_stall_timeout=100
panic=-1
softlockup_panic=1
nmi_watchdog=panic
oops=panic
load_ramdisk=2
prompt_ramdisk=0
console=ttyS0,115200
console=tty0
vga=normal
root=/dev/ram0
rw
drbd.minor_count=8
)
"${kvm[@]}" --append "${append[*]}"
----------------------------------------------------------------------------
Thanks,
Fengguang
View attachment "dmesg-quantal-client9-43:20150307010904:x86_64-randconfig-c2-0305:4.0.0-rc1-00164-g692ddb6:6" of type "text/plain" (52604 bytes)
View attachment "config-4.0.0-rc1-00164-g692ddb6" of type "text/plain" (67821 bytes)
Powered by blists - more mailing lists