Re: [load_elf_binary] WARNING: bad unlock balance detected!

From: Fengguang Wu
Date: Tue Nov 07 2017 - 07:31:15 EST


Sorry please ignore this report -- according to Peter:

This is fixed by commit:

02a7c234e540 ("rcu: Suppress lockdep false-positive ->boost_mtx complaints")

The problem is that RCU boosting was mixing futex and !futex rt_mutex
ops.

On Tue, Nov 07, 2017 at 09:55:56AM +0800, Fengguang Wu wrote:
Hi,

Here is a warning in v4.14-rc8 -- it's not necessarily a new bug.

[ 66.941105] 8021q: adding VLAN 0 to HW filter on device eth0
[ 67.243706] 8021q: adding VLAN 0 to HW filter on device eth0
LKP: HOSTNAME vm-lkp-nex04-openwrt-ia32-4, MAC , kernel 4.14.0-rc8 158, serial console /dev/ttyS0
[ 67.943691]
[ 67.944258] =====================================
[ 67.945424] WARNING: bad unlock balance detected!
[ 67.946566] 4.14.0-rc8 #158 Not tainted
[ 67.947527] -------------------------------------
[ 67.948461] grep/1361 is trying to release lock (rcu_preempt_state) at:
[ 67.949772] [<c10e4348>] rcu_read_unlock_special+0x5f8/0x620
[ 67.950843] but there are no more locks to release!
[ 67.951839]
[ 67.951839] other info that might help us debug this:
[ 67.953115] 2 locks held by grep/1361:
[ 67.953881] #0: (&mm->mmap_sem){....}, at: [<c105194e>] __do_page_fault+0x2de/0xb40
[ 67.955392] #1: (rcu_read_lock){....}, at: [<c11a5900>] find_get_entry+0x0/0x420
[ 67.956841]
[ 67.956841] stack backtrace:
[ 67.957765] CPU: 0 PID: 1361 Comm: grep Not tainted 4.14.0-rc8 #158
[ 67.958944] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[ 67.960553] Call Trace:
[ 67.962208] dump_stack+0x16/0x1c
[ 67.962949] print_unlock_imbalance_bug+0xb9/0xd0
[ 67.963871] ? rcu_read_unlock_special+0x5f8/0x620
[ 67.964908] ? rcu_read_unlock_special+0x5f8/0x620
[ 67.965847] lock_release+0x1cc/0x490
[ 67.966599] ? rcu_read_unlock_special+0x5f8/0x620
[ 67.967551] ? _raw_spin_unlock_irqrestore+0x86/0xd0
[ 67.968543] rt_mutex_unlock+0x1e/0xb0
[ 67.969312] rcu_read_unlock_special+0x5f8/0x620
[ 67.970280] __rcu_read_unlock+0xa7/0xb0
[ 67.971067] find_get_entry+0x2ef/0x420
[ 67.971856] pagecache_get_page+0x1c/0x650
[ 67.972684] filemap_fault+0x105/0xd90
[ 67.973468] __do_fault+0x17/0x1d0
[ 67.974176] handle_mm_fault+0x1360/0x1d30
[ 67.974994] __do_page_fault+0x5a3/0xb40
[ 67.975798] ? kvm_read_and_reset_pf_reason+0x40/0x40
[ 67.976777] do_page_fault+0x30/0x250
[ 67.977529] ? kvm_read_and_reset_pf_reason+0x40/0x40
[ 67.978500] do_async_page_fault+0x2e/0xa0
[ 67.979321] common_exception+0x65/0x6a
[ 67.980156] EIP: clear_user+0x128/0x170
[ 67.980927] EFLAGS: 00010246 CPU: 0
[ 67.981652] EAX: 00000000 EBX: 000003fe ECX: 000003fe EDX: 00000003
[ 67.982821] ESI: b7fc0000 EDI: b7fbf005 EBP: ddda7e94 ESP: ddda7e80
[ 67.984010] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
[ 67.985058] ? handle_mm_fault+0x700/0x1d30
[ 67.985902] ? kvm_read_and_reset_pf_reason+0x40/0x40
[ 67.986881] padzero+0x3c/0x60
[ 67.987548] load_elf_binary+0x1908/0x1bf0
[ 67.988370] ? _raw_read_unlock+0x55/0x90
[ 67.989180] search_binary_handler+0xd9/0x160
[ 67.990102] do_execveat_common+0x8f3/0xb10
[ 67.990960] SyS_execve+0x1f/0x30
[ 67.991673] do_int80_syscall_32+0x95/0x290
[ 67.992508] entry_INT80_32+0x2f/0x2f
[ 67.993266] EIP: 0xb7f38b07
[ 67.993866] EFLAGS: 00000296 CPU: 0
[ 67.994627] EAX: ffffffda EBX: 08097394 ECX: 0809728c EDX: 080972a4
[ 67.995831] ESI: 08097394 EDI: 080972a4 EBP: bfbeb778 ESP: bfbeb754
[ 67.996998] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 007b
[ 68.012659] grep (1361) used greatest stack depth: 6232 bytes left
[ 69.303817] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX

Thanks,
Fengguang