2014-07-21 01:12:59

by Jet Chen

[permalink] [raw]
Subject: [Tree sweep] BUG: sleeping function called from invalid context at include/linux/highmem.h:58

Hi Andi,

0day kernel testing robot got the below dmesg and the first bad commit is

git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc.git scale/rcu-symlink
commit 25c305debfd676aa495137ca1eec21fce15198e7
Author: Andi Kleen <[email protected]>
AuthorDate: Sat Jul 12 22:46:24 2014 -0700
Commit: Andi Kleen <[email protected]>
CommitDate: Sun Jul 20 09:43:32 2014 -0700

Tree sweep: Mark all page_follow_link_light users as RCU safe
Now that page_follow_link_light() is RCU safe, mark all
users as supporting RCU by using the follow_link_rcu
entry point.
Signed-off-by: Andi Kleen <[email protected]>

+------------------------------------------------------------------------------+------------+------------+
| | 868656d432 | 25c305debf |
+------------------------------------------------------------------------------+------------+------------+
| boot_successes | 60 | 0 |
| boot_failures | 0 | 20 |
| BUG:sleeping_function_called_from_invalid_context_at_include/linux/highmem.h | 0 | 20 |
| backtrace:SYSC_socketcall | 0 | 11 |
| backtrace:SyS_socketcall | 0 | 12 |
| backtrace:do_sys_open | 0 | 1 |
| backtrace:SyS_open | 0 | 1 |
| backtrace:SYSC_faccessat | 0 | 7 |
| backtrace:SyS_access | 0 | 7 |
+------------------------------------------------------------------------------+------------+------------+

[ 1.309807] evm: HMAC attrs: 0x0
[ 1.311772] Freeing unused kernel memory: 424K (79650000 - 796ba000)
[ 1.319415] random: init urandom read with 0 bits of entropy available
[ 1.322727] BUG: sleeping function called from invalid context at include/linux/highmem.h:58
[ 1.323637] in_atomic(): 0, irqs_disabled(): 0, pid: 91, name: rc.local
[ 1.324200] 1 lock held by rc.local/91:
[ 1.324514] #0: (rcu_read_lock){......}, at: [<790ca709>] rcu_read_lock+0x0/0x70
[ 1.325199] Preemption disabled at:[<79063d3c>] console_unlock+0x37e/0x3d2
[ 1.325774] [ 1.325940] CPU: 0 PID: 91 Comm: rc.local Not tainted 3.16.0-rc4-00160-g25c305d #204
[ 1.326610] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[ 1.327098] 00000000 00000000 849adb5c 793b1aa6 00000000 849adb88 7904b1b2 795b42cc
[ 1.327827] 79063d3c 79063d3c 0000005b 8499c3d0 00000000 8a53bd80 89cc5830 849adbac
[ 1.328584] 849adba4 790caeda 00000000 00000000 849adca0 00000003 00000000 849adbb4
[ 1.329309] Call Trace:
[ 1.329521] [<793b1aa6>] dump_stack+0x49/0x73
[ 1.329884] [<7904b1b2>] __might_sleep+0x1d1/0x1d9
[ 1.330302] [<79063d3c>] ? console_unlock+0x37e/0x3d2
[ 1.330723] [<79063d3c>] ? console_unlock+0x37e/0x3d2
[ 1.331144] [<790caeda>] page_getlink.isra.31.constprop.47+0x78/0xbc
[ 1.331666] [<790caf40>] page_follow_link_light+0x22/0x30
[ 1.332146] [<790cb846>] link_path_walk+0x30b/0x524
[ 1.332564] [<790caf1e>] ? page_getlink.isra.31.constprop.47+0xbc/0xbc
[ 1.332566] [<790cbaad>] path_lookupat+0x4e/0x3e9
[ 1.332571] [<7905bb4e>] ? find_usage_backwards+0x62/0x69
[ 1.332573] [<7905c72f>] ? mark_lock+0x1e/0x217
[ 1.332575] [<790cbe67>] filename_lookup.isra.34+0x1f/0x54
[ 1.332577] [<790cbeca>] do_path_lookup+0x2e/0x36
[ 1.332580] [<790cbeef>] kern_path+0x1d/0x32
[ 1.332585] [<790b8d9f>] ? virt_to_head_page+0x8/0x49
[ 1.332587] [<790b94ab>] ? ksize+0x13/0x1e
[ 1.332593] [<79384cad>] ? __alloc_skb+0x80/0x154
[ 1.332599] [<793a828d>] unix_find_other.isra.30+0x27/0x160
[ 1.332605] [<79381e3f>] ? sock_wmalloc+0x53/0x5e
[ 1.332606] [<793a966f>] unix_stream_connect+0xd8/0x37a
[ 1.332608] [<7937f4b0>] SYSC_connect+0x7e/0xb4
[ 1.332616] [<791c466c>] ? _copy_from_user+0x35/0x49
[ 1.332618] [<7937fcf0>] SYSC_socketcall+0xba/0x3de
[ 1.332620] [<7905ef9f>] ? lock_release+0x151/0x195
[ 1.332623] [<793b97d6>] ? _raw_spin_unlock+0x27/0x39
[ 1.332625] [<790ab27b>] ? do_read_fault.isra.85+0x23c/0x246
[ 1.332628] [<7905ef9f>] ? lock_release+0x151/0x195
[ 1.332630] [<7904b099>] ? __might_sleep+0xb8/0x1d9
[ 1.332631] [<7905aa8c>] ? up_read+0x1d/0x20
[ 1.332634] [<790276f0>] ? __do_page_fault+0x35a/0x3d0
[ 1.332636] [<790aa047>] ? might_fault+0x92/0x98
[ 1.332638] [<793ba2cb>] ? restore_all+0xf/0xf
[ 1.332642] [<791d6677>] ? __this_cpu_preempt_check+0xf/0x11
[ 1.332643] [<79027780>] ? do_page_fault+0x1a/0x1e
[ 1.332645] [<79380045>] SyS_socketcall+0xe/0x10
[ 1.332647] [<793ba292>] syscall_call+0x7/0xb
/bin/sh: /proc/self/fd/9: No such file or directory
/bin/sh: /proc/self/fd/9: No such file or directory
/bin/sh: /proc/self/fd/9: No such file or directory

git bisect start c0902b93f0f427427f6cb75cb5074288f8001d5d 6b458ac195c51790830b2267bdf3edaae27eab3e --
git bisect bad 25c305debfd676aa495137ca1eec21fce15198e7 # 04:23 0- 20 Tree sweep: Mark all page_follow_link_light users as RCU safe
git bisect good 07076cff76ba5dfaf3c0e7028df5e2dd47cf240d # 04:25 20+ 0 vfs: Add follow_link_rcu to inode_ops
git bisect good ee1765112b945f13fdac430d677621a20207d593 # 04:28 20+ 0 vfs: Update path-lookup.txt for RCU symlink walking
git bisect good 868656d432372fc95e57ec7bcd0ac17b0734c806 # 04:31 20+ 0 vfs: Make page_follow_link_light RCU safe
# first bad commit: [25c305debfd676aa495137ca1eec21fce15198e7] Tree sweep: Mark all page_follow_link_light users as RCU safe
git bisect good 868656d432372fc95e57ec7bcd0ac17b0734c806 # 04:34 60+ 0 vfs: Make page_follow_link_light RCU safe
git bisect bad c0902b93f0f427427f6cb75cb5074288f8001d5d # 04:34 0- 11 fixup! xfs: Add RCU fast symlink path
git bisect good d057190925d994b808e1d07e6c76b90a32caac77 # 04:39 60+ 0 Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect good 58e323c3ee94f1abcecdeeef211a27d1c106c2b3 # 04:43 60+ 60 Add linux-next specific files for 20140718


This script may reproduce the error.

----------------------------------------------------------------------------
#!/bin/bash

kernel=$1
initrd=quantal-core-i386.cgz

wget --no-clobber https://github.com/fengguang/reproduce-kernel-bug/blob/master/initrd/$initrd

kvm=(
qemu-system-x86_64
-enable-kvm
-cpu Haswell,+smep,+smap
-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
debug
apic=debug
sysrq_always_enabled
rcupdate.rcu_cpu_stall_timeout=100
panic=10
softlockup_panic=1
nmi_watchdog=panic
prompt_ramdisk=0
console=ttyS0,115200
console=tty0
vga=normal
root=/dev/ram0
rw
drbd.minor_count=8
)

"${kvm[@]}" --append "${append[*]}"
----------------------------------------------------------------------------

Thanks,
Jet


Attachments:
dmesg-quantal-kbuild-11:20140721042139:i386-randconfig-r0-0721:3.16.0-rc4-00160-g25c305d:204 (44.26 kB)
i386-randconfig-r0-0721-c0902b93f0f427427f6cb75cb5074288f8001d5d-BUG:-sleeping-function-called-from-invalid-context-at-43083.log (18.98 kB)
config-3.16.0-rc4-00160-g25c305d (83.79 kB)
Attached Message Part (86.00 B)
Download all attachments

2014-07-21 05:19:29

by Andi Kleen

[permalink] [raw]
Subject: Re: [Tree sweep] BUG: sleeping function called from invalid context at include/linux/highmem.h:58

On Mon, Jul 21, 2014 at 09:10:10AM +0800, Jet Chen wrote:
> Hi Andi,
>
> 0day kernel testing robot got the below dmesg and the first bad commit is

Thanks. That branch is not quite ready yet.

-Andi