In the Linux kernel, the following vulnerability has been resolved:
f2fs: split initial and dynamic conditions for extent_cache
Let's allocate the extent_cache tree without dynamic conditions to avoid a missing condition causing a panic as below.
# create a file w/ a compressed flag # disable the compression # panic while updating extent_cache
F2FS-fs (dm-64): Swapfile: last extent is not aligned to section F2FS-fs (dm-64): Swapfile (3) is not align to section: 1) creat(), 2) ioctl(F2FSIOCSETPINFILE), 3) fallocate(2097152 * N)
BUG: KASAN: null-ptr-deref in instrumentatomicreadwrite out/common/include/linux/instrumented.h:101 [inline] BUG: KASAN: null-ptr-deref in atomictrycmpxchgacquire out/common/include/asm-generic/atomic-instrumented.h:705 [inline] BUG: KASAN: null-ptr-deref in queuedwritelock out/common/include/asm-generic/qrwlock.h:92 [inline] BUG: KASAN: null-ptr-deref in _rawwritelock out/common/include/linux/rwlockapismp.h:211 [inline] BUG: KASAN: null-ptr-deref in _rawwrite_lock+0x5a/0x110 out/common/kernel/locking/spinlock.c:295 Write of size 4 at addr 0000000000000030 by task syz-executor154/3327
CPU: 0 PID: 3327 Comm: syz-executor154 Tainted: G O 5.10.185 #1 Hardware name: emulation qemu-x86/qemu-x86, BIOS 2023.01-21885-gb3cc1cd24d 01/01/2023 Call Trace: _dumpstack out/common/lib/dumpstack.c:77 [inline] dumpstacklvl+0x17e/0x1c4 out/common/lib/dumpstack.c:118 _kasanreport+0x16c/0x260 out/common/mm/kasan/report.c:415 kasanreport+0x51/0x70 out/common/mm/kasan/report.c:428 kasancheckrange+0x2f3/0x340 out/common/mm/kasan/generic.c:186 _kasancheckwrite+0x14/0x20 out/common/mm/kasan/shadow.c:37 instrumentatomicreadwrite out/common/include/linux/instrumented.h:101 [inline] atomictrycmpxchgacquire out/common/include/asm-generic/atomic-instrumented.h:705 [inline] queuedwritelock out/common/include/asm-generic/qrwlock.h:92 [inline] _rawwritelock out/common/include/linux/rwlockapismp.h:211 [inline] _rawwritelock+0x5a/0x110 out/common/kernel/locking/spinlock.c:295 _dropextenttree+0xdf/0x2f0 out/common/fs/f2fs/extentcache.c:1155 f2fsdropextenttree+0x17/0x30 out/common/fs/f2fs/extentcache.c:1172 f2fsinsertrange out/common/fs/f2fs/file.c:1600 [inline] f2fsfallocate+0x19fd/0x1f40 out/common/fs/f2fs/file.c:1764 vfsfallocate+0x514/0x9b0 out/common/fs/open.c:310 ksysfallocate out/common/fs/open.c:333 [inline] _dosysfallocate out/common/fs/open.c:341 [inline] _sesysfallocate out/common/fs/open.c:339 [inline] _x64sysfallocate+0xb8/0x100 out/common/fs/open.c:339 dosyscall_64+0x35/0x50 out/common/arch/x86/entry/common.c:46