linux/fs/exfat
Namjae Jeon 6bc58b4c53 exfat: validate cluster allocation bits of the allocation bitmap
[ Upstream commit 79c1587b6c ]

syzbot created an exfat image with cluster bits not set for the allocation
bitmap. exfat-fs reads and uses the allocation bitmap without checking
this. The problem is that if the start cluster of the allocation bitmap
is 6, cluster 6 can be allocated when creating a directory with mkdir.
exfat zeros out this cluster in exfat_mkdir, which can delete existing
entries. This can reallocate the allocated entries. In addition,
the allocation bitmap is also zeroed out, so cluster 6 can be reallocated.
This patch adds exfat_test_bitmap_range to validate that clusters used for
the allocation bitmap are correctly marked as in-use.

Reported-by: syzbot+a725ab460fc1def9896f@syzkaller.appspotmail.com
Tested-by: syzbot+a725ab460fc1def9896f@syzkaller.appspotmail.com
Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-11-13 15:34:31 -05:00
..
balloc.c exfat: validate cluster allocation bits of the allocation bitmap 2025-11-13 15:34:31 -05:00
cache.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
dir.c exfat: add cluster chain loop check for dir 2025-08-20 18:30:47 +02:00
exfat_fs.h exfat: fix soft lockup in exfat_clear_bitmap 2025-03-13 13:02:08 +01:00
exfat_raw.h exfat: add ioctls for accessing attributes 2023-10-31 10:00:51 +09:00
fatent.c exfat: limit log print for IO error 2025-11-13 15:34:31 -05:00
file.c exfat: fdatasync flag should be same like generic_write_sync() 2025-08-15 12:14:02 +02:00
inode.c exfat: call bh_read in get_block only when necessary 2025-05-29 11:02:03 +02:00
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
Makefile exfat: add Kconfig and Makefile 2020-03-05 21:00:40 -05:00
misc.c exfat: convert to new timestamp accessors 2023-10-18 13:26:21 +02:00
namei.c exfat: add cluster chain loop check for dir 2025-08-20 18:30:47 +02:00
nls.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
super.c exfat: add cluster chain loop check for dir 2025-08-20 18:30:47 +02:00