Re: [syzbot] [ntfs?] KMSAN: uninit-value in post_read_mst_fixup (2)

From: syzbot
Date: Wed Dec 27 2023 - 07:12:35 EST


syzbot has found a reproducer for the following issue on:

HEAD commit: fbafc3e621c3 Merge tag 'for_linus' of git://git.kernel.org..
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=170a9f76e80000
kernel config: https://syzkaller.appspot.com/x/.config?x=e0c7078a6b901aa3
dashboard link: https://syzkaller.appspot.com/bug?extid=82248056430fd49210e9
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=173c705ee80000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1410147ee80000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/1520f7b6daa4/disk-fbafc3e6.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/8b490af009d5/vmlinux-fbafc3e6.xz
kernel image: https://storage.googleapis.com/syzbot-assets/202ca200f4a4/bzImage-fbafc3e6.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/a03c45c57d87/mount_0.gz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+82248056430fd49210e9@xxxxxxxxxxxxxxxxxxxxxxxxx

ntfs: (device loop0): ntfs_read_locked_inode(): Failed with error code -2. Marking corrupt inode 0xa as bad. Run chkdsk.
ntfs: (device loop0): load_and_init_upcase(): Failed to load $UpCase from the volume. Using default.
ntfs: volume version 3.1.
ntfs: (device loop0): ntfs_mapping_pairs_decompress(): Corrupt attribute.
syz-executor416: attempt to access beyond end of device
loop0: rw=0, sector=552, nr_sectors = 8 limit=190
=====================================================
BUG: KMSAN: uninit-value in post_read_mst_fixup+0xab8/0xb70 fs/ntfs/mst.c:39
post_read_mst_fixup+0xab8/0xb70 fs/ntfs/mst.c:39
ntfs_end_buffer_async_read+0xbb8/0x1a70 fs/ntfs/aops.c:133
end_bio_bh_io_sync+0x130/0x1d0 fs/buffer.c:2775
bio_endio+0xb17/0xb70 block/bio.c:1603
submit_bio_noacct+0x230/0x2840 block/blk-core.c:816
submit_bio+0x171/0x1c0 block/blk-core.c:842
submit_bh_wbc+0x7de/0x850 fs/buffer.c:2821
submit_bh+0x26/0x30 fs/buffer.c:2826
ntfs_read_block fs/ntfs/aops.c:339 [inline]
ntfs_read_folio+0x364b/0x3930 fs/ntfs/aops.c:430
filemap_read_folio+0xce/0x370 mm/filemap.c:2323
do_read_cache_folio+0x3b4/0x11e0 mm/filemap.c:3691
do_read_cache_page mm/filemap.c:3757 [inline]
read_cache_page+0x63/0x1c0 mm/filemap.c:3766
read_mapping_page include/linux/pagemap.h:871 [inline]
ntfs_map_page fs/ntfs/aops.h:75 [inline]
ntfs_lookup_inode_by_name+0x1d97/0x50d0 fs/ntfs/dir.c:308
check_windows_hibernation_status+0xc4/0xca0 fs/ntfs/super.c:1282
load_system_files+0x6d84/0x97b0 fs/ntfs/super.c:1997
ntfs_fill_super+0x307e/0x45d0 fs/ntfs/super.c:2900
mount_bdev+0x3d7/0x560 fs/super.c:1650
ntfs_mount+0x4d/0x60 fs/ntfs/super.c:3057
legacy_get_tree+0x110/0x290 fs/fs_context.c:662
vfs_get_tree+0xa5/0x520 fs/super.c:1771
do_new_mount+0x68d/0x1550 fs/namespace.c:3337
path_mount+0x73d/0x1f20 fs/namespace.c:3664
do_mount fs/namespace.c:3677 [inline]
__do_sys_mount fs/namespace.c:3886 [inline]
__se_sys_mount+0x725/0x810 fs/namespace.c:3863
__x64_sys_mount+0xe4/0x140 fs/namespace.c:3863
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x63/0x6b

Uninit was created at:
__alloc_pages+0x9a4/0xe00 mm/page_alloc.c:4591
alloc_pages_mpol+0x62b/0x9d0 mm/mempolicy.c:2133
alloc_pages mm/mempolicy.c:2204 [inline]
folio_alloc+0x1da/0x380 mm/mempolicy.c:2211
filemap_alloc_folio+0xa5/0x430 mm/filemap.c:974
do_read_cache_folio+0x163/0x11e0 mm/filemap.c:3655
do_read_cache_page mm/filemap.c:3757 [inline]
read_cache_page+0x63/0x1c0 mm/filemap.c:3766
read_mapping_page include/linux/pagemap.h:871 [inline]
ntfs_map_page fs/ntfs/aops.h:75 [inline]
ntfs_lookup_inode_by_name+0x1d97/0x50d0 fs/ntfs/dir.c:308
check_windows_hibernation_status+0xc4/0xca0 fs/ntfs/super.c:1282
load_system_files+0x6d84/0x97b0 fs/ntfs/super.c:1997
ntfs_fill_super+0x307e/0x45d0 fs/ntfs/super.c:2900
mount_bdev+0x3d7/0x560 fs/super.c:1650
ntfs_mount+0x4d/0x60 fs/ntfs/super.c:3057
legacy_get_tree+0x110/0x290 fs/fs_context.c:662
vfs_get_tree+0xa5/0x520 fs/super.c:1771
do_new_mount+0x68d/0x1550 fs/namespace.c:3337
path_mount+0x73d/0x1f20 fs/namespace.c:3664
do_mount fs/namespace.c:3677 [inline]
__do_sys_mount fs/namespace.c:3886 [inline]
__se_sys_mount+0x725/0x810 fs/namespace.c:3863
__x64_sys_mount+0xe4/0x140 fs/namespace.c:3863
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x63/0x6b

CPU: 1 PID: 5006 Comm: syz-executor416 Not tainted 6.7.0-rc7-syzkaller-00003-gfbafc3e621c3 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
=====================================================


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.