CVE-2023-53247 in Linuxinfo

Zusammenfassung

von VulDB • 20.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

btrfs: set_page_extent_mapped nach read_folio in btrfs_cont_expand

Während des Versuchs, die Tests zur Subpage-Blockgröße (subpage blocksize) zum Laufen zu bringen, trat bei generic/476 der folgende Kernel-Panic auf:

assertion failed: PagePrivate(page) && page->private, in fs/btrfs/subpage.c:229 kernel BUG at fs/btrfs/subpage.c:229! Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
CPU: 1 PID: 1453 Comm: fsstress Not tainted 6.4.0-rc7+ #12 Hardware name: QEMU KVM Virtual Machine, BIOS edk2-20230301gitf80f052277c8-26.fc38 03/01/2023 pstate: 61400005 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) pc : btrfs_subpage_assert+0xbc/0xf0 lr : btrfs_subpage_assert+0xbc/0xf0 Call trace: btrfs_subpage_assert+0xbc/0xf0 btrfs_subpage_clear_checked+0x38/0xc0 btrfs_page_clear_checked+0x48/0x98 btrfs_truncate_block+0x5d0/0x6a8 btrfs_cont_expand+0x5c/0x528 btrfs_write_check.isra.0+0xf8/0x150 btrfs_buffered_write+0xb4/0x760 btrfs_do_write_iter+0x2f8/0x4b0 btrfs_file_write_iter+0x1c/0x30 do_iter_readv_writev+0xc8/0x158 do_iter_write+0x9c/0x210 vfs_iter_write+0x24/0x40 iter_file_splice_write+0x224/0x390 direct_splice_actor+0x38/0x68 splice_direct_to_actor+0x12c/0x260 do_splice_direct+0x90/0xe8 generic_copy_file_range+0x50/0x90 vfs_copy_file_range+0x29c/0x470 __arm64_sys_copy_file_range+0xcc/0x498 invoke_syscall.constprop.0+0x80/0xd8 do_el0_svc+0x6c/0x168 el0_svc+0x50/0x1b0 el0t_64_sync_handler+0x114/0x120 el0t_64_sync+0x194/0x198

Dies geschieht, weil wir während btrfs_cont_expand eine Seite (page) erhalten, diese als gemappt markieren und, falls sie nicht als „Uptodate" markiert ist, sie lesen. Zwischen dem Lesevorgang und dem erneuten Sperren der Seite könnte jedoch release_folio() für die Seite aufgerufen worden sein, während die Seite weiterhin im Dateimapping verblieben ist. release_folio() kann die private Datenstruktur der Seite löschen, wodurch es später beim Versuch, die Subpage-Bits zu modifizieren, zu einem Fehler kommt.

Behoben wird dies, indem set_page_extent_mapped() nach dem Lesevorgang gesetzt wird. Dies ist sicher, da read_folio() set_page_extent_mapped() vor dem Lesevorgang aufruft. Wenn wir anschließend die private Datenstruktur löschen, die Seite aber im Mapping belassen, ist das erneute Setzen von set_page_extent_mapped() vollständig sicher. Mit diesem Patch kann ich generic/476 nun ohne Kernel-Panic ausführen.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Linux

Reservieren

15.09.2025

Veröffentlichung

15.09.2025

Moderieren

akzeptiert

Eintrag

VDB-324057

CPE

bereit

EPSS

0.00134

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!