hi, Kees Cook, we noticed a WARNING is our boot tests. as we understand, the WARNING is not introduced by this patch, instead, just changing stats as below. however, we failed to bisect "dmesg.WARNING:at_lib/refcount.c:#refcount_warn_saturate" which shows in parent commit to capture real commit which introduced the WARNING just made this report FYI what we observed in our boot tests. 8090de6a0536f462 93b9cd30de232c9b4e27221dff6 ---------------- --------------------------- fail:runs %reproduction fail:runs | | | :6 100% 6:6 dmesg.EIP:refcount_report_saturation 6:6 -100% :6 dmesg.EIP:refcount_warn_saturate :6 100% 6:6 dmesg.WARNING:at_lib/refcount.c:#refcount_report_saturation 6:6 -100% :6 dmesg.WARNING:at_lib/refcount.c:#refcount_warn_saturate Hello, kernel test robot noticed "WARNING:at_lib/refcount.c:#refcount_report_saturation" on: commit: 93b9cd30de232c9b4e27221dff6d02ac557b86eb ("[PATCH 4/5] refcount: Introduce refcount_long_t and APIs") url: https://github.com/intel-lab-lkp/linux/commits/Kees-Cook/fs-Do-not-allow-get_file-to-resurrect-0-f_count/20240503-063542 base: https://git.kernel.org/cgit/linux/kernel/git/vfs/vfs.git vfs.all patch link: https://lore.kernel.org/all/20240502223341.1835070-4-keescook@xxxxxxxxxxxx/ patch subject: [PATCH 4/5] refcount: Introduce refcount_long_t and APIs in testcase: boot compiler: gcc-13 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/202405061514.23fedba1-oliver.sang@xxxxxxxxx [ 2.683270][ T1] ------------[ cut here ]------------ [ 2.684014][ T1] refcount_t: decrement hit 0; leaking memory. [ 2.684829][ T1] WARNING: CPU: 0 PID: 1 at lib/refcount.c:29 refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.686080][ T1] Modules linked in: [ 2.686633][ T1] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.9.0-rc3-00078-g93b9cd30de23 #1 ade0d32fff89aed56247bad9c6991c6e60a975d2 [ 2.688188][ T1] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 2.689523][ T1] EIP: refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.690327][ T1] Code: c2 01 e8 92 8a b1 ff 0f 0b 58 c9 31 c0 31 d2 31 c9 c3 8d b4 26 00 00 00 00 68 ec bc f4 c1 c6 05 3e 42 4a c2 01 e8 6f 8a b1 ff <0f> 0b 5a c9 31 c0 31 d2 31 c9 c3 55 89 c1 89 d0 c7 01 00 00 00 c0 All code ======== 0: c2 01 e8 ret $0xe801 3: 92 xchg %eax,%edx 4: 8a b1 ff 0f 0b 58 mov 0x580b0fff(%rcx),%dh a: c9 leave b: 31 c0 xor %eax,%eax d: 31 d2 xor %edx,%edx f: 31 c9 xor %ecx,%ecx 11: c3 ret 12: 8d b4 26 00 00 00 00 lea 0x0(%rsi,%riz,1),%esi 19: 68 ec bc f4 c1 push $0xffffffffc1f4bcec 1e: c6 05 3e 42 4a c2 01 movb $0x1,-0x3db5bdc2(%rip) # 0xffffffffc24a4263 25: e8 6f 8a b1 ff call 0xffffffffffb18a99 2a:* 0f 0b ud2 <-- trapping instruction 2c: 5a pop %rdx 2d: c9 leave 2e: 31 c0 xor %eax,%eax 30: 31 d2 xor %edx,%edx 32: 31 c9 xor %ecx,%ecx 34: c3 ret 35: 55 push %rbp 36: 89 c1 mov %eax,%ecx 38: 89 d0 mov %edx,%eax 3a: c7 01 00 00 00 c0 movl $0xc0000000,(%rcx) Code starting with the faulting instruction =========================================== 0: 0f 0b ud2 2: 5a pop %rdx 3: c9 leave 4: 31 c0 xor %eax,%eax 6: 31 d2 xor %edx,%edx 8: 31 c9 xor %ecx,%ecx a: c3 ret b: 55 push %rbp c: 89 c1 mov %eax,%ecx e: 89 d0 mov %edx,%eax 10: c7 01 00 00 00 c0 movl $0xc0000000,(%rcx) [ 2.692770][ T1] EAX: 00000000 EBX: e19ee0c4 ECX: 00000000 EDX: 00000000 [ 2.693685][ T1] ESI: e19ee0c0 EDI: c37ad880 EBP: c3767dd0 ESP: c3767dcc [ 2.694597][ T1] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010246 [ 2.695638][ T1] CR0: 80050033 CR2: ffcb2000 CR3: 02723000 CR4: 00040690 [ 2.696557][ T1] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 2.697464][ T1] DR6: fffe0ff0 DR7: 00000400 [ 2.698106][ T1] Call Trace: [ 2.698586][ T1] ? show_regs (arch/x86/kernel/dumpstack.c:479) [ 2.699197][ T1] ? refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.699975][ T1] ? __warn (kernel/panic.c:694) [ 2.700547][ T1] ? refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.701322][ T1] ? report_bug (lib/bug.c:201 lib/bug.c:219) [ 2.701960][ T1] ? exc_overflow (arch/x86/kernel/traps.c:252) [ 2.702584][ T1] ? handle_bug (arch/x86/kernel/traps.c:218) [ 2.703208][ T1] ? exc_invalid_op (arch/x86/kernel/traps.c:260 (discriminator 1)) [ 2.703850][ T1] ? handle_exception (arch/x86/entry/entry_32.S:1047) [ 2.704538][ T1] ? devkmsg_open (kernel/printk/printk.c:596 kernel/printk/printk.c:615 kernel/printk/printk.c:919) [ 2.705173][ T1] ? exc_overflow (arch/x86/kernel/traps.c:252) [ 2.705798][ T1] ? refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.706578][ T1] ? exc_overflow (arch/x86/kernel/traps.c:252) [ 2.707215][ T1] ? refcount_report_saturation (lib/refcount.c:29 (discriminator 1)) [ 2.707994][ T1] refcount_warn_saturate (lib/refcount.c:40) [ 2.708693][ T1] __reset_page_owner (include/linux/refcount-impl.h:318 include/linux/refcount-impl.h:333 mm/page_owner.c:228 mm/page_owner.c:266) [ 2.709377][ T1] __free_pages_ok (include/linux/mmzone.h:1100 mm/page_alloc.c:1144 mm/page_alloc.c:1270) [ 2.710036][ T1] make_alloc_exact (mm/page_alloc.c:4828 (discriminator 1)) [ 2.710687][ T1] alloc_pages_exact (mm/page_alloc.c:4859) [ 2.711357][ T1] alloc_large_system_hash (mm/mm_init.c:2531) [ 2.712095][ T1] inet_hashinfo2_init (net/ipv4/inet_hashtables.c:1193 (discriminator 1)) [ 2.712770][ T1] tcp_init (net/ipv4/tcp.c:4714) [ 2.713348][ T1] inet_init (net/ipv4/af_inet.c:2032) [ 2.713949][ T1] ? ipv4_offload_init (net/ipv4/af_inet.c:1942) [ 2.714640][ T1] do_one_initcall (init/main.c:1238) [ 2.715294][ T1] ? rdinit_setup (init/main.c:1286) [ 2.715927][ T1] do_initcalls (init/main.c:1299 (discriminator 1) init/main.c:1316 (discriminator 1)) [ 2.716542][ T1] ? rest_init (init/main.c:1429) [ 2.717157][ T1] kernel_init_freeable (init/main.c:1550) [ 2.717852][ T1] kernel_init (init/main.c:1439) [ 2.718455][ T1] ret_from_fork (arch/x86/kernel/process.c:153) [ 2.719085][ T1] ? rest_init (init/main.c:1429) [ 2.719700][ T1] ret_from_fork_asm (arch/x86/entry/entry_32.S:737) [ 2.720348][ T1] entry_INT80_32 (arch/x86/entry/entry_32.S:944) [ 2.720999][ T1] irq event stamp: 263893 [ 2.721599][ T1] hardirqs last enabled at (263903): console_unlock (arch/x86/include/asm/irqflags.h:26 arch/x86/include/asm/irqflags.h:67 arch/x86/include/asm/irqflags.h:127 kernel/printk/printk.c:341 kernel/printk/printk.c:2731 kernel/printk/printk.c:3050) [ 2.722782][ T1] hardirqs last disabled at (263912): console_unlock (kernel/printk/printk.c:339 (discriminator 3) kernel/printk/printk.c:2731 (discriminator 3) kernel/printk/printk.c:3050 (discriminator 3)) [ 2.723947][ T1] softirqs last enabled at (263164): release_sock (net/core/sock.c:3560) [ 2.725080][ T1] softirqs last disabled at (263162): release_sock (net/core/sock.c:3549) [ 2.726210][ T1] ---[ end trace 0000000000000000 ]--- The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240506/202405061514.23fedba1-oliver.sang@xxxxxxxxx -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki