Re: [RFC PATCH v3 5/9] futex: Track the futex hash bucket.

kernel test robot
2024-11-22T10:08:20Z

Hello,

kernel test robot noticed "WARNING:at_lib/rcuref.c:#rcuref_put_slowpath" on:

commit: 85bef61dcb6b15e3f68893e8bb8178f38ef4e58d ("[RFC PATCH v3 5/9] futex: Track the futex hash bucket.")
url: https://github.com/intel-lab-lkp/linux/commits/Sebastian-Andrzej-Siewior/futex-Create-helper-function-to-initialize-a-hash-slot/20241116-230708
base: https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git 3b49a347d751553b1d1be69c8619ae2e85fdc28d
patch link: https://lore.kernel.org/all/20241115172035.795842-6-bigeasy@linutronix.de/
patch subject: [RFC PATCH v3 5/9] futex: Track the futex hash bucket.

in testcase: boot

config: i386-randconfig-006-20241118
compiler: gcc-12
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)

+----------------------------------------------+------------+------------+
| | 4e12d1b5d7 | 85bef61dcb |
+----------------------------------------------+------------+------------+
| boot_successes | 12 | 0 |
| boot_failures | 0 | 13 |
| BUG:unable_to_handle_page_fault_for_address | 0 | 13 |
| Oops | 0 | 13 |
| EIP:futex_hash_priv_put | 0 | 13 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 13 |
| WARNING:at_lib/rcuref.c:#rcuref_put_slowpath | 0 | 4 |
| EIP:rcuref_put_slowpath | 0 | 4 |
+----------------------------------------------+------------+------------+

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202411221706.c9d399d3-lkp@intel.com

[ 9.626353][ T1] ------------[ cut here ]------------
[ 9.626688][ T1] rcuref - imbalanced put()
[ 9.626712][ T1] WARNING: CPU: 0 PID: 1 at lib/rcuref.c:267 rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.627382][ T1] Modules linked in:
[ 9.627583][ T1] CPU: 0 UID: 0 PID: 1 Comm: systemd Not tainted 6.12.0-rc2-00034-g85bef61dcb6b #1
[ 9.628038][ T1] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 9.628551][ T1] EIP: rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.628854][ T1] Code: 00 b8 10 32 20 b2 6a 00 e8 cf 85 e4 ff 31 c9 ba 01 00 00 00 b8 f8 31 20 b2 6a 01 e8 bc 85 e4 ff 68 95 3c c7 b1 e8 d0 e9 d1 ff <0f> 0b 6a 01 31 c9 ba 01 00 00 00 b8 e0 31 20 b2 e8 9d 85 e4 ff 31
All code
========
0: 00 b8 10 32 20 b2 add %bh,-0x4ddfcdf0(%rax)
6: 6a 00 push $0x0
8: e8 cf 85 e4 ff call 0xffffffffffe485dc
d: 31 c9 xor %ecx,%ecx
f: ba 01 00 00 00 mov $0x1,%edx
14: b8 f8 31 20 b2 mov $0xb22031f8,%eax
19: 6a 01 push $0x1
1b: e8 bc 85 e4 ff call 0xffffffffffe485dc
20: 68 95 3c c7 b1 push $0xffffffffb1c73c95
25: e8 d0 e9 d1 ff call 0xffffffffffd1e9fa
2a:* 0f 0b ud2 <-- trapping instruction
2c: 6a 01 push $0x1
2e: 31 c9 xor %ecx,%ecx
30: ba 01 00 00 00 mov $0x1,%edx
35: b8 e0 31 20 b2 mov $0xb22031e0,%eax
3a: e8 9d 85 e4 ff call 0xffffffffffe485dc
3f: 31 .byte 0x31

Code starting with the faulting instruction
===========================================
0: 0f 0b ud2
2: 6a 01 push $0x1
4: 31 c9 xor %ecx,%ecx
6: ba 01 00 00 00 mov $0x1,%edx
b: b8 e0 31 20 b2 mov $0xb22031e0,%eax
10: e8 9d 85 e4 ff call 0xffffffffffe485b2
15: 31 .byte 0x31
[ 9.629828][ T1] EAX: 00000000 EBX: cccccc01 ECX: 00000000 EDX: 00000000
[ 9.630176][ T1] ESI: ec030980 EDI: b0219f04 EBP: b0219ec0 ESP: b0219eac
[ 9.630523][ T1] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00210246
[ 9.630906][ T1] CR0: 80050033 CR2: a7be1f90 CR3: 03786000 CR4: 00040690
[ 9.631261][ T1] Call Trace:
[ 9.631431][ T1] ? show_regs (arch/x86/kernel/dumpstack.c:479 arch/x86/kernel/dumpstack.c:465)
[ 9.631648][ T1] ? rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.631912][ T1] ? __warn (kernel/panic.c:748)
[ 9.632117][ T1] ? report_bug (lib/bug.c:201 lib/bug.c:219)
[ 9.632345][ T1] ? rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.632609][ T1] ? exc_overflow (arch/x86/kernel/traps.c:301)
[ 9.632858][ T1] ? handle_bug (arch/x86/kernel/traps.c:285)
[ 9.633081][ T1] ? exc_invalid_op (arch/x86/kernel/traps.c:309 (discriminator 1))
[ 9.637527][ T1] ? handle_exception (arch/x86/entry/entry_32.S:1054)
[ 9.637796][ T1] ? add_chain_block (kernel/locking/lockdep.c:3439)
[ 9.638033][ T1] ? exc_overflow (arch/x86/kernel/traps.c:301)
[ 9.638297][ T1] ? rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.638562][ T1] ? exc_overflow (arch/x86/kernel/traps.c:301)
[ 9.638786][ T1] ? rcuref_put_slowpath (lib/rcuref.c:267 (discriminator 13))
[ 9.639047][ T1] futex_hash_priv_put (arch/x86/include/asm/preempt.h:84 include/linux/rcuref.h:151 kernel/futex/core.c:164)
[ 9.639301][ T1] futex_hash_put (kernel/futex/core.c:177)
[ 9.639525][ T1] futex_wake (kernel/futex/waitwake.c:180)
[ 9.639740][ T1] do_futex (kernel/futex/syscalls.c:107)
[ 9.639945][ T1] __ia32_sys_futex_time32 (kernel/futex/syscalls.c:509 kernel/futex/syscalls.c:492 kernel/futex/syscalls.c:492)
[ 9.640212][ T1] ia32_sys_call (kbuild/obj/consumer/i386-randconfig-006-20241118/./arch/x86/include/generated/asm/syscalls_32.h:241)
[ 9.640450][ T1] __do_fast_syscall_32 (arch/x86/entry/common.c:165 arch/x86/entry/common.c:386)
[ 9.640779][ T1] do_fast_syscall_32 (arch/x86/entry/common.c:411)
[ 9.641032][ T1] do_SYSENTER_32 (arch/x86/entry/common.c:450)
[ 9.641267][ T1] entry_SYSENTER_32 (arch/x86/entry/entry_32.S:836)
[ 9.641504][ T1] EIP: 0xa7f1556d
[ 9.641687][ T1] Code: c4 01 10 03 03 74 c0 01 10 05 03 74 b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 8d 76 00 58 b8 77 00 00 00 cd 80 90 8d 76
All code
========
0: c4 01 10 03 (bad)
4: 03 74 c0 01 add 0x1(%rax,%rax,8),%esi
8: 10 05 03 74 b8 01 adc %al,0x1b87403(%rip) # 0x1b87411
e: 10 06 adc %al,(%rsi)
10: 03 74 b4 01 add 0x1(%rsp,%rsi,4),%esi
14: 10 07 adc %al,(%rdi)
16: 03 74 b0 01 add 0x1(%rax,%rsi,4),%esi
1a: 10 08 adc %cl,(%rax)
1c: 03 74 d8 01 add 0x1(%rax,%rbx,8),%esi
20: 00 51 52 add %dl,0x52(%rcx)
23: 55 push %rbp
24: 89 e5 mov %esp,%ebp
26: 0f 34 sysenter
28: cd 80 int $0x80
2a:* 5d pop %rbp <-- trapping instruction
2b: 5a pop %rdx
2c: 59 pop %rcx
2d: c3 ret
2e: 90 nop
2f: 90 nop
30: 90 nop
31: 90 nop
32: 8d 76 00 lea 0x0(%rsi),%esi
35: 58 pop %rax
36: b8 77 00 00 00 mov $0x77,%eax
3b: cd 80 int $0x80
3d: 90 nop
3e: 8d .byte 0x8d
3f: 76 .byte 0x76

Code starting with the faulting instruction
===========================================
0: 5d pop %rbp
1: 5a pop %rdx
2: 59 pop %rcx
3: c3 ret
4: 90 nop
5: 90 nop
6: 90 nop
7: 90 nop
8: 8d 76 00 lea 0x0(%rsi),%esi
b: 58 pop %rax
c: b8 77 00 00 00 mov $0x77,%eax
11: cd 80 int $0x80
13: 90 nop
14: 8d .byte 0x8d
15: 76 .byte 0x76
[ 9.642620][ T1] EAX: ffffffda EBX: a7bfaa6c ECX: 00000081 EDX: 7fffffff
[ 9.642963][ T1] ESI: 00000000 EDI: a7630000 EBP: 000000f0 ESP: af90bad0
[ 9.643313][ T1] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00200246
[ 9.643690][ T1] irq event stamp: 113183
[ 9.643903][ T1] hardirqs last enabled at (113191): __up_console_sem (arch/x86/include/asm/irqflags.h:42 (discriminator 1) arch/x86/include/asm/irqflags.h:97 (discriminator 1) arch/x86/include/asm/irqflags.h:155 (discriminator 1) kernel/printk/printk.c:344 (discriminator 1))
[ 9.644340][ T1] hardirqs last disabled at (113198): __up_console_sem (kernel/printk/printk.c:342 (discriminator 1))
[ 9.644898][ T1] softirqs last enabled at (113010): handle_softirqs (kernel/softirq.c:401 kernel/softirq.c:582)
[ 9.645347][ T1] softirqs last disabled at (113005): __do_softirq (kernel/softirq.c:589)
[ 9.645752][ T1] ---[ end trace 0000000000000000 ]---
[ 9.662794][ T1] systemd[1]: RTC configured in localtime, applying delta of 0 minutes to system time.
[ 9.664914][ T1] systemd[1]: Failed to find module 'autofs4'

The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20241122/202411221706.c9d399d3-lkp@intel.com

--
0-DAY CI Kernel Test Service