Re: [PATCH v2 3/5] btrfs: move condition for log commit wait into wait_log_commit()
Oliver Sang <[email protected]> Fri, 31 Jul 2026 10:20:32 +0800
| Newsgroups | dev.linux.lists.oe-lkp,it.linux.lists.ltp,org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <amwGcP7fJYfR4uZu@xsang-desk> |
hi, Filipe Manana, On Thu, Jul 30, 2026 at 04:24:30PM +0100, Filipe Manana wrote: > On Thu, Jul 30, 2026 at 3:10 PM kernel test robot <[email protected]> wrote: > > > > > > > > Hello, > > > > kernel test robot noticed "UBSAN:array-index-out-of-bounds_in_btrfs/tree-log.c" on: > > Yes, this was actually fixed before committing to the for-next branch > on github, but missed the mailing list. thanks a lot for information! > The incremental diff is: > > diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c > index e59569770b7b..47046dd14997 100644 > --- a/fs/btrfs/tree-log.c > +++ b/fs/btrfs/tree-log.c > @@ -3168,7 +3168,7 @@ static int update_log_root(struct > btrfs_trans_handle *trans, > static bool wait_log_commit(struct btrfs_root *root, int transid) > { > DEFINE_WAIT(wait); > - int index = transid % 2; > + const int index = (transid >= 0 ? transid % 2 : -transid % 2); > > if (!root->log_commit[index]) > return false; > > Thanks. > > > > > commit: a99687b4edeead900d714fa0839a302a5a56d7aa ("[PATCH v2 3/5] btrfs: move condition for log commit wait into wait_log_commit()") > > url: https://github.com/intel-lab-lkp/linux/commits/fdmanana-kernel-org/btrfs-stop-sleeping-for-one-jiffy-in-non-ssd-mounts-during-log-commit/20260722-235417 > > patch link: https://lore.kernel.org/all/842ef70c9ca3ddf17f8660ad24f63f6272621afa.1784733396.git.fdmanana@suse.com/ > > patch subject: [PATCH v2 3/5] btrfs: move condition for log commit wait into wait_log_commit() > > > > in testcase: ltp > > version: > > with following parameters: > > > > disk: 1SSD > > fs: btrfs > > test: syscalls-01 > > > > > > > > config: x86_64-rhel-9.4-ltp > > compiler: gcc-14 > > test machine: 8 threads Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (Skylake) with 16G memory > > > > (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 <[email protected]> > > | Closes: https://lore.kernel.org/oe-lkp/[email protected] > > > > > > > > kern :warn : [ 104.466941] [ T5568] ------------[ cut here ]------------ > > kern :err : [ 104.467469] [ T5568] UBSAN: array-index-out-of-bounds in btrfs/tree-log.c:3173:35 > > kern :err : [ 104.467989] [ T5568] index -1 is out of range for type 'atomic_t [2]' > > kern :warn : [ 104.468507] [ T5568] CPU: 4 UID: 0 PID: 5568 Comm: fdatasync03 Not tainted 7.2.0-rc4+ #1 PREEMPT(lazy) > > kern :warn : [ 104.468512] [ T5568] Hardware name: System manufacturer System Product Name/Z170I PRO GAMING, BIOS 3805 05/16/2018 > > kern :warn : [ 104.468514] [ T5568] Call Trace: > > kern :warn : [ 104.468516] [ T5568] <TASK> > > kern :warn : [ 104.468519] [ T5568] dump_stack_lvl (dump_stack.c:94 dump_stack.c:120) > > kern :warn : [ 104.468528] [ T5568] ubsan_epilogue (ubsan.c:233) > > kern :warn : [ 104.468533] [ T5568] __ubsan_handle_out_of_bounds.cold (ubsan.c:455 ubsan.c:442) > > kern :warn : [ 104.468539] [ T5568] ? __pfx_stack_trace_consume_entry (usercopy_64.c:?) > > kern :warn : [ 104.468544] [ T5568] wait_log_commit (btrfs/tree-log.c:3173) btrfs > > kern :warn : [ 104.468751] [ T5568] ? kernel_text_address (extable.c:125 extable.c:94) > > kern :warn : [ 104.468757] [ T5568] ? __pfx_wait_log_commit (btrfs/tree-log.c:4984) btrfs > > kern :warn : [ 104.468950] [ T5568] ? arch_stack_walk (x86/kernel/stacktrace.c:26) > > kern :warn : [ 104.468955] [ T5568] ? __pfx_autoremove_wake_function (linux/list.h:441 (discriminator 4)) > > kern :warn : [ 104.468961] [ T5568] ? mutex_lock (linux/instrumented.h:55 linux/atomic/atomic-instrumented.h:4457 locking/mutex.c:161 locking/mutex.c:318) > > kern :warn : [ 104.468966] [ T5568] ? __pfx_mutex_lock (locking/mutex.c:1164 (discriminator 1)) > > kern :warn : [ 104.468973] [ T5568] btrfs_sync_log (btrfs/tree-log.c:3331) btrfs > > kern :warn : [ 104.469161] [ T5568] ? __printk_deferred_exit (printk/printk_safe.c:55 (discriminator 1)) > > kern :warn : [ 104.469164] [ T5568] ? stack_depot_save_flags (stackdepot.c:728) > > kern :warn : [ 104.469168] [ T5568] ? kasan_save_stack (kasan/common.c:58) > > kern :warn : [ 104.469171] [ T5568] ? kasan_save_stack (kasan/common.c:57) > > kern :warn : [ 104.469174] [ T5568] ? __pfx_btrfs_sync_log (btrfs/tree-log.c:3254) btrfs > > kern :warn : [ 104.469285] [ T5568] ? do_fsync (sync.c:186 sync.c:200 sync.c:211) > > kern :warn : [ 104.469288] [ T5568] ? __x64_sys_fdatasync (sync.c:221 sync.c:219 sync.c:219) > > kern :warn : [ 104.469291] [ T5568] ? do_syscall_64 (x86/entry/syscall_64.c:63 x86/entry/syscall_64.c:94) > > kern :warn : [ 104.469294] [ T5568] ? entry_SYSCALL_64_after_hwframe (x86/entry/entry_64.S:121) > > kern :warn : [ 104.469298] [ T5568] ? __pfx_free_extent_buffer_clear_reading (btrfs/extent_io.c:3746) btrfs > > kern :warn : [ 104.469405] [ T5568] ? __pfx_copy_inode_items_to_log (linux/list.h:161) btrfs > > kern :warn : [ 104.469512] [ T5568] ? kasan_save_track (kasan/common.c:78) > > kern :warn : [ 104.469516] [ T5568] ? kmem_cache_free (linux/kasan.h:235 slub.c:2705 slub.c:6405 slub.c:6532) > > kern :warn : [ 104.469519] [ T5568] ? btrfs_release_path (btrfs/ctree.c:173 (discriminator 1)) btrfs > > kern :warn : [ 104.469618] [ T5568] ? free_frozen_page_commit (linux/instrumented.h:82 asm-generic/bitops/instrumented-non-atomic.h:141 page_alloc.c:2809 page_alloc.c:2881) > > kern :warn : [ 104.469622] [ T5568] ? __free_frozen_pages (linux/spinlock.h:390 page_alloc.c:2980) > > kern :warn : [ 104.469626] [ T5568] ? __page_cache_release (linux/instrumented.h:82 asm-generic/bitops/instrumented-non-atomic.h:141 linux/page-flags.h:552 swap.c:76) > > kern :warn : [ 104.469629] [ T5568] ? __virt_addr_valid (linux/mmzone.h:2187 (discriminator 1) linux/mmzone.h:2269 (discriminator 1) x86/mm/physaddr.c:54 (discriminator 1)) > > kern :warn : [ 104.469632] [ T5568] ? rcu_segcblist_enqueue (linux/instrumented.h:112 linux/atomic/atomic-instrumented.h:3260 rcu/rcu_segcblist.c:214 rcu/rcu_segcblist.c:231 rcu/rcu_segcblist.c:332) > > kern :warn : [ 104.469635] [ T5568] ? __call_rcu_common+0x341/0x970 > > kern :warn : [ 104.469639] [ T5568] ? __pfx___call_rcu_common+0x10/0x10 > > kern :warn : [ 104.469642] [ T5568] ? _raw_spin_lock_irq (linux/instrumented.h:55 linux/atomic/atomic-instrumented.h:1301 asm-generic/qspinlock.h:111 linux/spinlock.h:187 linux/spinlock_api_smp.h:143 locking/spinlock.c:174) > > kern :warn : [ 104.469645] [ T5568] ? detach_extent_buffer_folio (linux/mm.h:2124 linux/pagemap.h:636 btrfs/extent_io.c:2976) btrfs > > kern :warn : [ 104.469753] [ T5568] ? release_extent_buffer (btrfs/extent_io.c:3758 btrfs/extent_io.c:3721) btrfs > > kern :warn : [ 104.469860] [ T5568] ? free_extent_buffer_clear_reading (btrfs/extent_io.c:3821) btrfs > > kern :warn : [ 104.469966] [ T5568] ? __pfx_free_extent_buffer_clear_reading (btrfs/extent_io.c:3746) btrfs > > kern :warn : [ 104.470073] [ T5568] btrfs_sync_file (btrfs/file.c:1726) btrfs > > kern :warn : [ 104.470181] [ T5568] ? __pfx_btrfs_sync_file (btrfs/file.c:1489) btrfs > > kern :warn : [ 104.470296] [ T5568] ? fdget (linux/instrumented.h:82 linux/atomic/atomic-instrumented.h:49 file.c:1194 file.c:1208) > > kern :warn : [ 104.470300] [ T5568] do_fsync (sync.c:186 sync.c:200 sync.c:211) > > kern :warn : [ 104.470303] [ T5568] __x64_sys_fdatasync (sync.c:221 sync.c:219 sync.c:219) > > kern :warn : [ 104.470306] [ T5568] do_syscall_64 (x86/entry/syscall_64.c:63 x86/entry/syscall_64.c:94) > > kern :warn : [ 104.470310] [ T5568] ? do_syscall_64 (linux/irq-entry-common.h:210 linux/irq-entry-common.h:230 linux/entry-common.h:318 x86/entry/syscall_64.c:100) > > kern :warn : [ 104.470313] [ T5568] ? __pfx_vfs_write (linux/fs.h:2733 (discriminator 1)) > > kern :warn : [ 104.470317] [ T5568] ? __x64_sys_munmap (mmap.c:1079 mmap.c:1076 mmap.c:1076) > > kern :warn : [ 104.470320] [ T5568] ? do_syscall_64 (linux/irq-entry-common.h:210 linux/irq-entry-common.h:230 linux/entry-common.h:318 x86/entry/syscall_64.c:100) > > kern :warn : [ 104.470324] [ T5568] ? fdget_pos (linux/instrumented.h:82 linux/atomic/atomic-instrumented.h:3188 linux/file_ref.h:215 file.c:1231 file.c:1257) > > kern :warn : [ 104.470327] [ T5568] ? ksys_write (read_write.c:739) > > kern :warn : [ 104.470330] [ T5568] ? __pfx_ksys_write (read_write.c:723) > > kern :warn : [ 104.470333] [ T5568] ? __pfx_ksys_write (read_write.c:723) > > kern :warn : [ 104.470337] [ T5568] ? do_syscall_64 (linux/irq-entry-common.h:210 linux/irq-entry-common.h:230 linux/entry-common.h:318 x86/entry/syscall_64.c:100) > > kern :warn : [ 104.470340] [ T5568] ? do_syscall_64 (linux/irq-entry-common.h:210 linux/irq-entry-common.h:230 linux/entry-common.h:318 x86/entry/syscall_64.c:100) > > kern :warn : [ 104.470344] [ T5568] ? do_syscall_64 (linux/randomize_kstack.h:57 x86/entry/syscall_64.c:92) > > kern :warn : [ 104.470347] [ T5568] entry_SYSCALL_64_after_hwframe (x86/entry/entry_64.S:121) > > kern :warn : [ 104.470350] [ T5568] RIP: 0033:0x7f28a60b5687 > > kern :warn : [ 104.470353] [ T5568] Code: 48 89 fa 4c 89 df e8 58 b3 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 <5b> c3 0f 1f 80 00 00 00 00 83 e2 39 83 fa 08 75 de e8 23 ff ff ff > > All code > > ======== > > 0: 48 89 fa mov %rdi,%rdx > > 3: 4c 89 df mov %r11,%rdi > > 6: e8 58 b3 00 00 call 0xb363 > > b: 8b 93 08 03 00 00 mov 0x308(%rbx),%edx > > 11: 59 pop %rcx > > 12: 5e pop %rsi > > 13: 48 83 f8 fc cmp $0xfffffffffffffffc,%rax > > 17: 74 1a je 0x33 > > 19: 5b pop %rbx > > 1a: c3 ret > > 1b: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) > > 22: 00 > > 23: 48 8b 44 24 10 mov 0x10(%rsp),%rax > > 28: 0f 05 syscall > > 2a:* 5b pop %rbx <-- trapping instruction > > 2b: c3 ret > > 2c: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) > > 33: 83 e2 39 and $0x39,%edx > > 36: 83 fa 08 cmp $0x8,%edx > > 39: 75 de jne 0x19 > > 3b: e8 23 ff ff ff call 0xffffffffffffff63 > > > > Code starting with the faulting instruction > > =========================================== > > 0: 5b pop %rbx > > 1: c3 ret > > 2: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) > > 9: 83 e2 39 and $0x39,%edx > > c: 83 fa 08 cmp $0x8,%edx > > f: 75 de jne 0xffffffffffffffef > > 11: e8 23 ff ff ff call 0xffffffffffffff39 > > kern :warn : [ 104.470356] [ T5568] RSP: 002b:00007ffcb7666460 EFLAGS: 00000202 ORIG_RAX: 000000000000004b > > kern :warn : [ 104.470360] [ T5568] RAX: ffffffffffffffda RBX: 00007f28a6023780 RCX: 00007f28a60b5687 > > kern :warn : [ 104.470362] [ T5568] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003 > > kern :warn : [ 104.470363] [ T5568] RBP: 00007f28a6023720 R08: 0000000000000000 R09: 0000000000000000 > > kern :warn : [ 104.470365] [ T5568] R10: 0000000000000000 R11: 0000000000000202 R12: 000056382db4c047 > > kern :warn : [ 104.470367] [ T5568] R13: 0000000000000004 R14: 0000000000000000 R15: 000056382db4d260 > > kern :warn : [ 104.470370] [ T5568] </TASK> > > kern :warn : [ 104.504778] [ T5568] ---[ end trace ]--- > > > > > > The kernel config and materials to reproduce are available at: > > https://download.01.org/0day-ci/archive/20260730/[email protected] > > > > > > > > -- > > 0-DAY CI Kernel Test Service > > https://github.com/intel/lkp-tests/wiki > > > >