Hello, kernel test robot noticed "WARNING:possible_recursive_locking_detected" on: commit: a13252049629a8225f38a9be7d8d4fc4ff5350e8 ("mm: fix mmap_assert_locked() in follow_pte()") https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master [test failed on linux-next/master 3fe121b622825ff8cc995a1e6b026181c48188db] in testcase: boot compiler: clang-18 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-lkp/202407141006.2957b01a-lkp@xxxxxxxxx [ 5.151914][ T98] WARNING: possible recursive locking detected [ 5.152929][ T98] 6.10.0-rc6-00035-ga13252049629 #1 Tainted: G T [ 5.154009][ T98] -------------------------------------------- [ 5.154939][ T98] init/98 is trying to acquire lock: [ 5.155818][ T98] c1012e30 (&mm->mmap_lock){++++}-{3:3}, at: mmap_read_lock (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145) [ 5.156939][ T98] [ 5.156939][ T98] but task is already holding lock: [ 5.158380][ T98] c1012e30 (&mm->mmap_lock){++++}-{3:3}, at: exit_mmap (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145 mm/mmap.c:3325) [ 5.159430][ T98] [ 5.159430][ T98] other info that might help us debug this: [ 5.160863][ T98] Possible unsafe locking scenario: [ 5.160863][ T98] [ 5.162163][ T98] CPU0 [ 5.162778][ T98] ---- [ 5.163406][ T98] lock(&mm->mmap_lock); [ 5.164080][ T98] lock(&mm->mmap_lock); [ 5.164854][ T98] [ 5.164854][ T98] *** DEADLOCK *** [ 5.164854][ T98] [ 5.166540][ T98] May be due to missing lock nesting notation [ 5.166540][ T98] [ 5.167828][ T98] 3 locks held by init/98: [ 5.168575][ T98] #0: c31a9a80 (&sig->cred_guard_mutex){+.+.}-{3:3}, at: bprm_execve (fs/exec.c:?) [ 5.169659][ T98] #1: c31a9b4c (&sig->exec_update_lock){+.+.}-{3:3}, at: exec_mmap (fs/exec.c:1018) [ 5.170919][ T98] #2: c1012e30 (&mm->mmap_lock){++++}-{3:3}, at: exit_mmap (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145 mm/mmap.c:3325) [ 5.172091][ T98] [ 5.172091][ T98] stack backtrace: [ 5.173262][ T98] CPU: 0 PID: 98 Comm: init Tainted: G T 6.10.0-rc6-00035-ga13252049629 #1 [ 5.174372][ T98] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 5.175533][ T98] Call Trace: [ 5.176159][ T98] dump_stack_lvl (lib/dump_stack.c:? lib/dump_stack.c:114) [ 5.176864][ T98] dump_stack (lib/dump_stack.c:123) [ 5.177524][ T98] print_deadlock_bug (kernel/locking/lockdep.c:?) [ 5.178258][ T98] __lock_acquire (kernel/locking/lockdep.c:3062) [ 5.178967][ T98] ? lock_acquire (kernel/locking/lockdep.c:5754) [ 5.179663][ T98] ? __pte_offset_map_lock (include/linux/pgtable.h:324 include/linux/pgtable.h:588 mm/pgtable-generic.c:376) [ 5.180432][ T98] lock_acquire (kernel/locking/lockdep.c:5754) [ 5.181123][ T98] ? mmap_read_lock (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145) [ 5.181839][ T98] down_read (kernel/locking/rwsem.c:1526) [ 5.182525][ T98] ? mmap_read_lock (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145) [ 5.183238][ T98] mmap_read_lock (arch/x86/include/asm/jump_label.h:41 include/linux/jump_label.h:207 include/linux/mmap_lock.h:35 include/linux/mmap_lock.h:145) [ 5.183942][ T98] unmap_single_vma (mm/memory.c:1822) [ 5.184678][ T98] unmap_vmas (mm/memory.c:1892) [ 5.185343][ T98] exit_mmap (mm/mmap.c:3341) [ 5.186009][ T98] __mmput (kernel/fork.c:1413 kernel/fork.c:1348) [ 5.186658][ T98] mmput (kernel/fork.c:1369) [ 5.187291][ T98] exec_mmap (fs/exec.c:?) [ 5.187964][ T98] begin_new_exec (fs/exec.c:1330) [ 5.188669][ T98] load_elf_binary (fs/binfmt_elf.c:997) [ 5.189344][ T98] bprm_execve (fs/exec.c:1797 fs/exec.c:1839 fs/exec.c:1891) [ 5.189995][ T98] do_execveat_common (fs/exec.c:?) [ 5.190691][ T98] __ia32_sys_execve (fs/exec.c:2143) [ 5.191396][ T98] ia32_sys_call (arch/x86/entry/syscall_32.c:42) [ 5.192085][ T98] do_int80_syscall_32 (arch/x86/entry/common.c:?) [ 5.192780][ T98] ? exc_page_fault (arch/x86/mm/fault.c:1543) [ 5.193463][ T98] entry_INT80_32 (arch/x86/entry/entry_32.S:944) [ 5.194144][ T98] EIP: 0xb7e67864 [ 5.194757][ T98] Code: Unable to access opcode bytes at 0xb7e6783a. Code starting with the faulting instruction =========================================== [ 5.195610][ T98] EAX: ffffffda EBX: bfb3a2d4 ECX: bfb3a10c EDX: 0044a360 [ 5.196520][ T98] ESI: bfb3a10c EDI: bfb3a2d4 EBP: bfb3a0a8 ESP: bfb3a048 [ 5.197518][ T98] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 007b EFLAGS: 00000286 [ 5.198575][ C0] vkms_vblank_simulate: vblank timer overrun The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240714/202407141006.2957b01a-lkp@xxxxxxxxx -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki