[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202509281204.3086f707-lkp@intel.com>
Date: Sun, 28 Sep 2025 13:17:37 +0800
From: kernel test robot <oliver.sang@...el.com>
To: Joshua Hahn <joshua.hahnjy@...il.com>
CC: <oe-lkp@...ts.linux.dev>, <lkp@...el.com>, Chris Mason <clm@...com>,
Johannes Weiner <hannes@...xchg.org>, <linux-mm@...ck.org>, Andrew Morton
<akpm@...ux-foundation.org>, Kiryl Shutsemau <kirill@...temov.name>, "Brendan
Jackman" <jackmanb@...gle.com>, Michal Hocko <mhocko@...e.com>, "Suren
Baghdasaryan" <surenb@...gle.com>, Vlastimil Babka <vbabka@...e.cz>, Zi Yan
<ziy@...dia.com>, <linux-kernel@...r.kernel.org>, <kernel-team@...a.com>,
<oliver.sang@...el.com>
Subject: Re: [PATCH v2 4/4] mm/page_alloc: Batch page freeing in
free_frozen_page_commit
Hello,
kernel test robot noticed "WARNING:bad_unlock_balance_detected" on:
commit: 7e86100bfb0d65a17f3228a9af4c2a49ac38f057 ("[PATCH v2 4/4] mm/page_alloc: Batch page freeing in free_frozen_page_commit")
url: https://github.com/intel-lab-lkp/linux/commits/Joshua-Hahn/mm-page_alloc-vmstat-Simplify-refresh_cpu_vm_stats-change-detection/20250925-044532
patch link: https://lore.kernel.org/all/20250924204409.1706524-5-joshua.hahnjy@gmail.com/
patch subject: [PATCH v2 4/4] mm/page_alloc: Batch page freeing in free_frozen_page_commit
in testcase: trinity
version:
with following parameters:
runtime: 300s
group: group-03
nr_groups: 5
config: x86_64-randconfig-161-20250927
compiler: gcc-14
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@...el.com>
| Closes: https://lore.kernel.org/oe-lkp/202509281204.3086f707-lkp@intel.com
[ 414.880298][ T7549] WARNING: bad unlock balance detected!
[ 414.881071][ T7549] 6.17.0-rc6-00147-g7e86100bfb0d #1 Not tainted
[ 414.881924][ T7549] -------------------------------------
[ 414.882695][ T7549] date/7549 is trying to release lock (&pcp->lock) at:
[ 414.883649][ T7549] free_frozen_page_commit+0x425/0x9d0
[ 414.884764][ T7549] but there are no more locks to release!
[ 414.885539][ T7549]
[ 414.885539][ T7549] other info that might help us debug this:
[ 414.886704][ T7549] 2 locks held by date/7549:
[ 414.887353][ T7549] #0: ffff888104f29940 (&mm->mmap_lock){++++}-{4:4}, at: exit_mmap (include/linux/seqlock.h:431 include/linux/mmap_lock.h:88 include/linux/mmap_lock.h:398 mm/mmap.c:1288)
[ 414.888591][ T7549] #1: ffff8883ae40e858 (&pcp->lock){+.+.}-{3:3}, at: free_frozen_page_commit+0x46a/0x9d0
[ 414.890003][ T7549]
[ 414.890003][ T7549] stack backtrace:
[ 414.890867][ T7549] CPU: 0 UID: 0 PID: 7549 Comm: date Not tainted 6.17.0-rc6-00147-g7e86100bfb0d #1 PREEMPT
[ 414.890878][ T7549] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 414.890882][ T7549] Call Trace:
[ 414.890887][ T7549] <TASK>
[ 414.890892][ T7549] dump_stack_lvl (lib/dump_stack.c:122)
[ 414.890904][ T7549] ? free_frozen_page_commit+0x425/0x9d0
[ 414.890914][ T7549] print_unlock_imbalance_bug.cold (kernel/locking/lockdep.c:5301)
[ 414.890923][ T7549] ? free_frozen_page_commit+0x425/0x9d0
[ 414.890929][ T7549] lock_release (kernel/locking/lockdep.c:470 (discriminator 4) kernel/locking/lockdep.c:5891 (discriminator 4))
[ 414.890936][ T7549] _raw_spin_unlock (include/linux/spinlock_api_smp.h:142 kernel/locking/spinlock.c:186)
[ 414.890945][ T7549] free_frozen_page_commit+0x425/0x9d0
[ 414.890955][ T7549] free_unref_folios (mm/page_alloc.c:3051 (discriminator 1))
[ 414.890963][ T7549] ? mark_held_locks (kernel/locking/lockdep.c:4325 (discriminator 1))
[ 414.890975][ T7549] folios_put_refs (mm/swap.c:999)
[ 414.890985][ T7549] ? __folio_put (mm/swap.c:949)
[ 414.890990][ T7549] ? check_bytes_and_report (mm/slub.c:1253)
[ 414.890999][ T7549] ? check_bytes_and_report (mm/slub.c:1253)
[ 414.891005][ T7549] ? look_up_lock_class (kernel/locking/lockdep.c:933 (discriminator 28))
[ 414.891015][ T7549] release_pages (mm/swap.c:1035)
[ 414.891022][ T7549] ? folio_add_lru (mm/swap.c:1016)
[ 414.891034][ T7549] ? __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[ 414.891054][ T7549] tlb_flush_mmu (mm/mmu_gather.c:137 mm/mmu_gather.c:149 mm/mmu_gather.c:397 mm/mmu_gather.c:404)
[ 414.891063][ T7549] ? down_write (kernel/locking/rwsem.c:1588)
[ 414.891073][ T7549] tlb_finish_mmu (mm/mmu_gather.c:157 mm/mmu_gather.c:500)
[ 414.891080][ T7549] exit_mmap (mm/mmap.c:1300)
[ 414.891088][ T7549] ? do_munmap (mm/mmap.c:1255)
[ 414.891093][ T7549] ? kvm_sched_clock_read (arch/x86/kernel/kvmclock.c:91 (discriminator 2))
[ 414.891098][ T7549] ? local_clock_noinstr (kernel/sched/clock.c:304 (discriminator 1))
[ 414.891106][ T7549] ? __x64_sys_io_setup (fs/aio.c:893)
[ 414.891115][ T7549] ? __mutex_unlock_slowpath (arch/x86/include/asm/atomic64_64.h:101 include/linux/atomic/atomic-arch-fallback.h:4329 include/linux/atomic/atomic-long.h:1506 include/linux/atomic/atomic-instrumented.h:4481 kernel/locking/mutex.c:939)
[ 414.891128][ T7549] mmput (kernel/fork.c:1197 (discriminator 2) kernel/fork.c:1131 (discriminator 2) kernel/fork.c:1152 (discriminator 2))
[ 414.891136][ T7549] exit_mm (kernel/exit.c:583 (discriminator 1))
[ 414.891144][ T7549] do_exit (kernel/exit.c:956)
[ 414.891149][ T7549] ? stack_not_used (kernel/exit.c:893)
[ 414.891154][ T7549] ? do_group_exit (include/linux/spinlock.h:402 kernel/exit.c:1099)
[ 414.891161][ T7549] do_group_exit (kernel/exit.c:1083)
[ 414.891167][ T7549] __x64_sys_exit_group (kernel/exit.c:1111)
[ 414.891173][ T7549] x64_sys_call (kbuild/obj/consumer/x86_64-randconfig-161-20250927/./arch/x86/include/generated/asm/syscalls_64.h:61)
[ 414.891180][ T7549] do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
[ 414.891192][ T7549] ? lock_acquire (kernel/locking/lockdep.c:470 (discriminator 4) kernel/locking/lockdep.c:5870 (discriminator 4))
[ 414.891200][ T7549] ? kvm_sched_clock_read (arch/x86/kernel/kvmclock.c:91 (discriminator 2))
[ 414.891204][ T7549] ? local_clock_noinstr (kernel/sched/clock.c:304 (discriminator 1))
[ 414.891208][ T7549] ? local_clock (arch/x86/include/asm/preempt.h:95 kernel/sched/clock.c:319)
[ 414.891216][ T7549] ? fput_close_sync (arch/x86/include/asm/atomic64_64.h:79 (discriminator 5) include/linux/atomic/atomic-arch-fallback.h:2913 (discriminator 5) include/linux/atomic/atomic-arch-fallback.h:3364 (discriminator 5) include/linux/atomic/atomic-long.h:698 (discriminator 5) include/linux/atomic/atomic-instrumented.h:3767 (discriminator 5) include/linux/file_ref.h:157 (discriminator 5) include/linux/file_ref.h:187 (discriminator 5) fs/file_table.c:572 (discriminator 5))
[ 414.891224][ T7549] ? alloc_file_clone (fs/file_table.c:571)
[ 414.891231][ T7549] ? trace_irq_enable+0xba/0x100
[ 414.891239][ T7549] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 414.891247][ T7549] ? __vm_munmap (mm/vma.c:3155)
[ 414.891254][ T7549] ? expand_downwards (mm/vma.c:3146)
[ 414.891265][ T7549] ? handle_mm_fault (include/linux/perf_event.h:1596 mm/memory.c:6263 mm/memory.c:6390)
[ 414.891272][ T7549] ? trace_irq_enable+0xba/0x100
[ 414.891278][ T7549] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 414.891284][ T7549] ? exc_page_fault (arch/x86/include/asm/irqflags.h:26 arch/x86/include/asm/irqflags.h:109 arch/x86/include/asm/irqflags.h:151 arch/x86/mm/fault.c:1484 arch/x86/mm/fault.c:1532)
[ 414.891290][ T7549] ? do_user_addr_fault (arch/x86/include/asm/atomic.h:93 (discriminator 4) include/linux/atomic/atomic-arch-fallback.h:949 (discriminator 4) include/linux/atomic/atomic-instrumented.h:401 (discriminator 4) include/linux/refcount.h:389 (discriminator 4) include/linux/refcount.h:432 (discriminator 4) include/linux/mmap_lock.h:143 (discriminator 4) include/linux/mmap_lock.h:267 (discriminator 4) arch/x86/mm/fault.c:1338 (discriminator 4))
[ 414.891302][ T7549] ? trace_irq_enable+0xba/0x100
[ 414.891307][ T7549] ? lockdep_hardirqs_on_prepare (kernel/locking/lockdep.c:4351 kernel/locking/lockdep.c:4410)
[ 414.891315][ T7549] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
[ 414.891322][ T7549] RIP: 0033:0x7f1f0ec31408
[ 414.891329][ T7549] Code: Unable to access opcode bytes at 0x7f1f0ec313de.
Code starting with the faulting instruction
===========================================
[ 414.891332][ T7549] RSP: 002b:00007ffc16600ce8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
[ 414.891340][ T7549] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f1f0ec31408
[ 414.891344][ T7549] RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
[ 414.891348][ T7549] RBP: 00007f1f0ef25820 R08: 00000000000000e7 R09: ffffffffffffffa0
[ 414.891352][ T7549] R10: 00007f1f0ef2cfa8 R11: 0000000000000246 R12: 00007f1f0ef25820
[ 414.891356][ T7549] R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000
[ 414.891365][ T7549] </TASK>
[ 424.617670][ T5443] trinity-c1 invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=500
[ 424.619318][ T5443] CPU: 1 UID: 65534 PID: 5443 Comm: trinity-c1 Not tainted 6.17.0-rc6-00147-g7e86100bfb0d #1 PREEMPT
[ 424.619331][ T5443] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 424.619335][ T5443] Call Trace:
[ 424.619340][ T5443] <TASK>
[ 424.619344][ T5443] dump_stack_lvl (lib/dump_stack.c:122)
[ 424.619359][ T5443] dump_header (mm/oom_kill.c:74 mm/oom_kill.c:468)
[ 424.619370][ T5443] oom_kill_process.cold (mm/oom_kill.c:1041)
[ 424.619377][ T5443] out_of_memory (mm/oom_kill.c:1180)
[ 424.619388][ T5443] ? oom_killer_disable (mm/oom_kill.c:1113)
[ 424.619397][ T5443] __alloc_pages_may_oom (mm/page_alloc.c:4055)
[ 424.619405][ T5443] ? __alloc_pages_direct_compact (mm/page_alloc.c:3987)
[ 424.619415][ T5443] __alloc_pages_slowpath+0x735/0x1460
[ 424.619425][ T5443] ? warn_alloc (mm/page_alloc.c:4625)
[ 424.619434][ T5443] __alloc_frozen_pages_noprof (mm/page_alloc.c:5190)
[ 424.619441][ T5443] ? __alloc_pages_slowpath+0x1460/0x1460
[ 424.619446][ T5443] ? __dquot_alloc_space (fs/quota/dquot.c:1683)
[ 424.619476][ T5443] ? trace_lock_release (include/trace/events/lock.h:69 (discriminator 2))
[ 424.619489][ T5443] ? trace_lock_acquire (include/trace/events/lock.h:24 (discriminator 2))
[ 424.619494][ T5443] ? lock_acquire (kernel/locking/lockdep.c:5833)
[ 424.619501][ T5443] alloc_pages_mpol (mm/mempolicy.c:2418)
[ 424.619507][ T5443] ? xas_start (include/linux/xarray.h:1210 (discriminator 1) lib/xarray.c:191 (discriminator 1))
[ 424.619515][ T5443] ? policy_nodemask (mm/mempolicy.c:2373)
[ 424.619520][ T5443] ? xas_load (include/linux/xarray.h:1226 (discriminator 2) lib/xarray.c:208 (discriminator 2) lib/xarray.c:246 (discriminator 2))
[ 424.619526][ T5443] folio_alloc_mpol_noprof (mm/mempolicy.c:2435)
[ 424.619533][ T5443] shmem_alloc_and_add_folio+0x3dd/0x4f0
[ 424.619544][ T5443] ? shmem_add_to_page_cache+0x900/0x900
[ 424.619551][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619560][ T5443] shmem_get_folio_gfp+0x42c/0xfa0
[ 424.619569][ T5443] ? shmem_write_end (mm/shmem.c:2497)
[ 424.619575][ T5443] ? folio_mark_dirty (mm/page-writeback.c:2849)
[ 424.619596][ T5443] shmem_fallocate (mm/shmem.c:3813)
[ 424.619607][ T5443] ? shmem_get_link (mm/shmem.c:3713)
[ 424.619612][ T5443] ? debug_object_activate (lib/debugobjects.c:837)
[ 424.619622][ T5443] ? do_raw_spin_unlock (arch/x86/include/asm/atomic.h:23 include/linux/atomic/atomic-arch-fallback.h:457 include/linux/atomic/atomic-instrumented.h:33 include/asm-generic/qspinlock.h:57 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141)
[ 424.619630][ T5443] ? validate_chain (include/linux/hash.h:78 (discriminator 3) kernel/locking/lockdep.c:3798 (discriminator 3) kernel/locking/lockdep.c:3821 (discriminator 3) kernel/locking/lockdep.c:3876 (discriminator 3))
[ 424.619636][ T5443] ? mark_lock (kernel/locking/lockdep.c:4731 (discriminator 1))
[ 424.619645][ T5443] ? __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[ 424.619653][ T5443] ? lock_acquire (kernel/locking/lockdep.c:470 (discriminator 4) kernel/locking/lockdep.c:5870 (discriminator 4))
[ 424.619659][ T5443] ? ksys_fallocate (include/linux/file.h:62 (discriminator 1) include/linux/file.h:83 (discriminator 1) fs/open.c:361 (discriminator 1))
[ 424.619670][ T5443] vfs_fallocate (fs/open.c:342 (discriminator 1))
[ 424.619679][ T5443] ksys_fallocate (include/linux/file.h:62 (discriminator 1) include/linux/file.h:83 (discriminator 1) fs/open.c:361 (discriminator 1))
[ 424.619685][ T5443] ? local_clock_noinstr (kernel/sched/clock.c:304 (discriminator 1))
[ 424.619694][ T5443] __ia32_sys_ia32_fallocate (arch/x86/kernel/sys_ia32.c:119)
[ 424.619703][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619709][ T5443] do_int80_emulation (arch/x86/entry/syscall_32.c:83 (discriminator 1) arch/x86/entry/syscall_32.c:172 (discriminator 1))
[ 424.619718][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619724][ T5443] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 424.619730][ T5443] ? kvm_sched_clock_read (arch/x86/kernel/kvmclock.c:91 (discriminator 2))
[ 424.619735][ T5443] ? local_clock_noinstr (kernel/sched/clock.c:304 (discriminator 1))
[ 424.619740][ T5443] ? local_clock (arch/x86/include/asm/preempt.h:95 kernel/sched/clock.c:319)
[ 424.619747][ T5443] ? __lock_release+0x120/0x230
[ 424.619752][ T5443] ? __task_pid_nr_ns (include/linux/rcupdate.h:341 include/linux/rcupdate.h:871 kernel/pid.c:518)
[ 424.619760][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619765][ T5443] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 424.619770][ T5443] ? put_timespec64 (kernel/time/time.c:910 (discriminator 1))
[ 424.619776][ T5443] ? __ia32_compat_sys_gettimeofday (kernel/time/time.c:904)
[ 424.619783][ T5443] ? __x64_sys_clock_gettime (kernel/time/posix-timers.c:1147 (discriminator 1) kernel/time/posix-timers.c:1135 (discriminator 1) kernel/time/posix-timers.c:1135 (discriminator 1))
[ 424.619792][ T5443] ? posix_timer_unhash_and_free (kernel/time/posix-timers.c:1135)
[ 424.619797][ T5443] ? kvm_sched_clock_read (arch/x86/kernel/kvmclock.c:91 (discriminator 2))
[ 424.619803][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619809][ T5443] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 424.619816][ T5443] ? trace_irq_enable+0xba/0x100
[ 424.619821][ T5443] ? do_syscall_64 (arch/x86/entry/syscall_64.c:113)
[ 424.619828][ T5443] ? trace_irq_disable+0xba/0x100
[ 424.619833][ T5443] ? do_int80_emulation (include/linux/irq-entry-common.h:98 arch/x86/entry/syscall_32.c:145)
[ 424.619840][ T5443] asm_int80_emulation (arch/x86/include/asm/idtentry.h:574)
[ 424.619846][ T5443] RIP: 0033:0x407d4c
[ 424.619854][ T5443] Code: 83 c0 01 41 89 80 40 30 00 00 8b 44 24 04 4c 89 d1 48 8b 54 24 08 4c 89 de 4c 89 e7 55 41 50 41 51 41 52 41 53 4c 89 cd cd 80 <41> 5b 41 5a 41 59 41 58 5d 48 3d 7a ff ff ff 49 89 c4 0f 87 5c 01
The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20250928/202509281204.3086f707-lkp@intel.com
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists