CVE-2026-53122

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: btrfs: flushoncommit kullanılırken reflink ve işlem onaylaması (transaction commit) arasındaki deadlock sorunu düzeltildi flushoncommit bağlama seçeneği kullanıldığında, bir işlem onaylaması ile hedef düğümün mevcut i_size değerinin ötesindeki bir ofsete satır içi genişletmeyi (inline extent) kopyalayan bir reflink işlemi arasında deadlock oluşabilmektedir. Deadlock şu şekilde gerçekleşir: 1) Görev A, inode X'teki bir satır içi genişletmeyi, inode Y'nin mevcut i_size değerinin ötesindeki bir ofsete klonlar. Bu durum, copy_inline_to_page() çağrısı kullanılarak satır içi genişletme verilerinin, inode Y'nin EOF değerinin ötesindeki bir folio'ya kopyalandığı anlamına gelir; 2) Görev B bir işlem onaylaması başlatır ve delalloc işlemini boşaltmak için btrfs_start_delalloc_flush() fonksiyonunu çağırır; 3) Delalloc boşaltma işlemi, inode Y'nin yeni kirli (dirty) folio'sunu görür ve bunu boşaltmaya çalıştığında extent_writepage() aşamasına gelir. Folio'nun ofsetinin inode Y'nin i_size değerinin ötesinde olduğunu görünce, folio_invalidate() çağrısını yaparak folio'yu geçersiz kılmaya çalışır; bu da btrfs'in folio geçersiz kılma geri çağırma fonksiyonu olan btrfs_invalidate_folio() ile sonuçlanır. Burada, inode Y'nin extent io ağacındaki folio aralığını kilitlemeye çalışır ancak bu aralık şu anda görev A tarafından kilitlendiği için engellenir. Bir reflink sırasında tüm delalloc işlemlerini boşalttıktan ve sıralı genişletme tamamlanmasını bekledikten sonra inode'ları ve kaynak ile hedef aralıklarını kilitleriz; bundan sonra aralıklarda kirli folio'ların olmasını beklemiyoruz, tek istisna bir satır içi genişletmenin verilerini kopyalamamız gerektiğinde (hedef ofset sıfır değilse) ortaya çıkar; 4) Ardından Görev A, inode öğesini güncellemek için bir işlem başlatmaya çalışır ve mevcut işlem TRANS_STATE_COMMIT_START durumunda olduğu için engellenir. Bu nedenle Görev A, mevcut işlemin engelinin kalkmasını (durumunun >= TRANS_STATE_UNBLOCKED olmasını) beklemek zorundadır. Böylece Görev A, Görev B tarafından gerçekleştirilen işlem onaylamasını beklemekte, Görev B ise şu anda Görev A tarafından tutulan inode Y'nin genişletme kilidini beklemektedir. Syzbot yakın zamanda bunu aşağıdaki yığın izleri (stack traces) ile raporlamıştır: INFO: task kworker/u8:7:1053 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:7 state:D stack:23520 pid:1053 tgid:1053 ppid:2 task_flags:0x4208060 flags:0x00080000 Workqueue: writeback wb_workfn (flush-btrfs-46) Call Trace: <TASK> context_switch kernel/sched/core.c:5298 [inline] __schedule+0x1553/0x5240 kernel/sched/core.c:6911 __schedule_loop kernel/sched/core.c:6993 [inline] schedule+0x164/0x360 kernel/sched/core.c:7008 wait_extent_bit fs/btrfs/extent-io-tree.c:811 [inline] btrfs_lock_extent_bits+0x59c/0x700 fs/btrfs/extent-io-tree.c:1914 btrfs_lock_extent fs/btrfs/extent-io-tree.h:152 [inline] btrfs_invalidate_folio+0x43d/0xc40 fs/btrfs/inode.c:7704 extent_writepage fs/btrfs/extent_io.c:1852 [inline] extent_write_cache_pages fs/btrfs/extent_io.c:2580 [inline] btrfs_writepages+0x12ff/0x2440 fs/btrfs/extent_io.c:2713 do_writepages+0x32e/0x550 mm/page-writeback.c:2554 __writeback_single_inode+0x133/0x11a0 fs/fs-writeback.c:1750 writeback_sb_inodes+0x995/0x19d0 fs/fs-writeback.c:2042 wb_writeback+0x456/0xb70 fs/fs-writeback.c:2227 wb_do_writeback fs/fs-writeback.c:2374 [inline] wb_workfn+0x41a/0xf60 fs/fs-writeback.c:2414 process_one_work kernel/workqueue.c:3276 [inline] process_scheduled_works+0xb6e/0x18c0 kernel/workqueue.c:3359 worker_thread+0xa53/0xfc0 kernel/workqueue.c:3440 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x51e/0xb90 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 </TASK> INFO: task syz.4.64:6910 blocked for more than 143 seconds. Not tainted syzkaller #0 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:syz.4.64 state:D stack:22752 pid:6910 tgid: ---truncated---

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 Haz 2026
İlk görülme24 Haz 2026

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.91, 6.18.33, 7.0.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.106.12.91, 6.18.33, 7.0.10

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.