Ad

CVE-2026-74318

NONE EPSS 0.17%
Обновлено 17 августа 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: btrfs: исправлена ошибка встроенного экстента клонирования тупиковой ситуации при использовании flashoncommit. В коммите b48c980b6a7e («btrfs: исправить взаимоблокировку между рефлинком и фиксация транзакции при использованииlushoncommit") исправлена тупиковая ситуация между рефссылками и фиксацией транзакции, когда fs монтируется с помощью опция флешонкоммит. Это произошло, когда нам пришлось скопировать встроенный экстент. данные в файл назначения.

Однако проблема была решена только для случае, когда смещение назначения равно 0, пропущен случай, когда смещение больше нуля. Исправьте это, обеспечив получение обновления i_size всякий раз, когда мы копируем встроенный данные экстента в файл назначения. Syzbot сообщил об этом следующим образом: ИНФОРМАЦИЯ: задача kworker/u8:3:57 заблокирована более чем на 143 секунды.

Неиспорченный сизкаллер #0 «echo 0 > /proc/sys/kernel/hung_task_timeout_secs» отключает это сообщение. задача: kworker/u8:3 состояние: D стек: 21600 pid: 57 tgid: 57 ppid: 2 Task_flags: 0x4208160 флаги: 0x00080000 Рабочая очередь: обратная запись wb_workfn (flush-btrfs-129) Отслеживание вызова: <ЗАДАЧА> context_switch kernel/sched/core.c:5402 [встроенный] __schedule+0x16f9/0x5500 ядро/sched/core.c:7204 __schedule_loop ядро/sched/core.c:7283 [встроенный] расписание+0x164/0x360 ядро/sched/core.c:7298 wait_extent_bit fs/btrfs/extent-io-tree.c:905 [встроенный] btrfs_lock_extent_bits+0x59c/0x700 fs/btrfs/extent-io-tree.c:2008 btrfs_lock_extent fs/btrfs/extent-io-tree.h:152 [встроенный] btrfs_invalidate_folio+0x440/0xc00 fs/btrfs/inode.c:7718 Extent_writepage fs/btrfs/extent_io.c:1848 [встроенный] Extent_write_cache_pages fs/btrfs/extent_io.c:2552 [встроенный] btrfs_writepages+0x12f3/0x2410 fs/btrfs/extent_io.c:2684 do_writepages+0x32e/0x550 мм/page-writeback.c:2571 __writeback_single_inode+0x133/0x10e0 fs/fs-writeback.c:1764 writeback_sb_inodes+0x97f/0x1980 fs/fs-writeback.c:2056 wb_writeback+0x445/0xb00 fs/fs-writeback.c:2241 wb_do_writeback fs/fs-writeback.c:2388 [встроенный] wb_workfn+0x3fd/0xf20 fs/fs-writeback.c:2428 process_one_work+0x98b/0x1630 ядро/workqueue.c:3318 process_scheduled_works ядро/workqueue.c:3401 [встроенный] worker_thread+0xb49/0x1140 ядро/workqueue.c:3482 kthread+0x388/0x470 ядро/kthread.c:436 ret_from_fork+0x514/0xb70 Arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 Arch/x86/entry/entry_64.S:245 </TASK> ИНФОРМАЦИЯ: задача syz.0.145:8523 заблокирована более чем на 143 секунды. Неиспорченный сизкаллер #0 «echo 0 > /proc/sys/kernel/hung_task_timeout_secs» отключает это сообщение. задача: syz.0.145 состояние: D стек: 22752 pid: 8523 tgid: 8522 ppid: 5850 Task_flags: 0x400140 флаги: 0x00080002 Отслеживание вызова: <ЗАДАЧА> context_switch kernel/sched/core.c:5402 [встроенный] __schedule+0x16f9/0x5500 ядро/sched/core.c:7204 __schedule_loop ядро/sched/core.c:7283 [встроенный] расписание+0x164/0x360 ядро/sched/core.c:7298 wb_wait_for_completion+0x3e8/0x790 fs/fs-writeback.c:227 __writeback_inodes_sb_nr+0x24c/0x2d0 fs/fs-writeback.c:2847 try_to_writeback_inodes_sb+0x9a/0xc0 fs/fs-writeback.c:2895 btrfs_start_delalloc_flush fs/btrfs/transaction.c:2182 [встроенный] btrfs_commit_transaction+0x813/0x2fc0 fs/btrfs/transaction.c:2371 btrfs_sync_file+0xdf4/0x1230 fs/btrfs/file.c:1822 generic_write_sync include/linux/fs.h:2663 [встроенный] btrfs_do_write_iter+0x6a9/0x840 fs/btrfs/file.c:1473 new_sync_write fs/read_write.c:595 [встроенный] vfs_write+0x629/0xba0 fs/read_write.c:688 ksys_write+0x156/0x270 фс/read_write.c:740 do_syscall_x64 Arch/x86/entry/syscall_64.c:63 [встроенный] do_syscall_64+0x15f/0x560 Arch/x86/entry/syscall_64.c:94 запись_SYSCALL_64_after_hwframe+0x77/0x7f РИП: 0033:0x7f5a0bdece59 RSP: 002b: 00007f5a0b446028 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007f5a0c065fa0 RCX: 00007f5a0bdece59 RDX: 000000000000029f RSI: 0000200000 ---усечено---

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: btrfs: fix deadlock cloning inline extent when using flushoncommit In commit b48c980b6a7e ("btrfs: fix deadlock between reflink and transaction commit when using flushoncommit") a deadlock was fixed between reflinks and transaction commits when the fs is mounted with the flushoncommit option. This happened when we had to copy an inline extent's data to the destination file. However the issue was fixed only for the case where the destination offset is 0, it missed the case when the offset is greater than zero. Fix this by ensuring we get i_size update whenever we copied an inline extent's data into the destination file. Syzbot reported this with the following trace: INFO: task kworker/u8:3:57 blocked for more than 143 seconds. Not tainted syzkaller #0 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:kworker/u8:3 state:D stack:21600 pid:57 tgid:57 ppid:2 task_flags:0x4208160 flags:0x00080000 Workqueue: writeback wb_workfn (flush-btrfs-129) Call Trace: <TASK> context_switch kernel/sched/core.c:5402 [inline] __schedule+0x16f9/0x5500 kernel/sched/core.c:7204 __schedule_loop kernel/sched/core.c:7283 [inline] schedule+0x164/0x360 kernel/sched/core.c:7298 wait_extent_bit fs/btrfs/extent-io-tree.c:905 [inline] btrfs_lock_extent_bits+0x59c/0x700 fs/btrfs/extent-io-tree.c:2008 btrfs_lock_extent fs/btrfs/extent-io-tree.h:152 [inline] btrfs_invalidate_folio+0x440/0xc00 fs/btrfs/inode.c:7718 extent_writepage fs/btrfs/extent_io.c:1848 [inline] extent_write_cache_pages fs/btrfs/extent_io.c:2552 [inline] btrfs_writepages+0x12f3/0x2410 fs/btrfs/extent_io.c:2684 do_writepages+0x32e/0x550 mm/page-writeback.c:2571 __writeback_single_inode+0x133/0x10e0 fs/fs-writeback.c:1764 writeback_sb_inodes+0x97f/0x1980 fs/fs-writeback.c:2056 wb_writeback+0x445/0xb00 fs/fs-writeback.c:2241 wb_do_writeback fs/fs-writeback.c:2388 [inline] wb_workfn+0x3fd/0xf20 fs/fs-writeback.c:2428 process_one_work+0x98b/0x1630 kernel/workqueue.c:3318 process_scheduled_works kernel/workqueue.c:3401 [inline] worker_thread+0xb49/0x1140 kernel/workqueue.c:3482 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 </TASK> INFO: task syz.0.145:8523 blocked for more than 143 seconds. Not tainted syzkaller #0 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:syz.0.145 state:D stack:22752 pid:8523 tgid:8522 ppid:5850 task_flags:0x400140 flags:0x00080002 Call Trace: <TASK> context_switch kernel/sched/core.c:5402 [inline] __schedule+0x16f9/0x5500 kernel/sched/core.c:7204 __schedule_loop kernel/sched/core.c:7283 [inline] schedule+0x164/0x360 kernel/sched/core.c:7298 wb_wait_for_completion+0x3e8/0x790 fs/fs-writeback.c:227 __writeback_inodes_sb_nr+0x24c/0x2d0 fs/fs-writeback.c:2847 try_to_writeback_inodes_sb+0x9a/0xc0 fs/fs-writeback.c:2895 btrfs_start_delalloc_flush fs/btrfs/transaction.c:2182 [inline] btrfs_commit_transaction+0x813/0x2fc0 fs/btrfs/transaction.c:2371 btrfs_sync_file+0xdf4/0x1230 fs/btrfs/file.c:1822 generic_write_sync include/linux/fs.h:2663 [inline] btrfs_do_write_iter+0x6a9/0x840 fs/btrfs/file.c:1473 new_sync_write fs/read_write.c:595 [inline] vfs_write+0x629/0xba0 fs/read_write.c:688 ksys_write+0x156/0x270 fs/read_write.c:740 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x15f/0x560 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f5a0bdece59 RSP: 002b:00007f5a0b446028 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007f5a0c065fa0 RCX: 00007f5a0bdece59 RDX: 000000000000029f RSI: 0000200000 ---truncated---