mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-07 23:18:24 +00:00
syzbot reported an uninit-value BUG:
BUG: KMSAN: uninit-value in ocfs2_get_block+0xed2/0x2710 fs/ocfs2/aops.c:159
ocfs2_get_block+0xed2/0x2710 fs/ocfs2/aops.c:159
do_mpage_readpage+0xc45/0x2780 fs/mpage.c:225
mpage_readahead+0x43f/0x840 fs/mpage.c:374
ocfs2_readahead+0x269/0x320 fs/ocfs2/aops.c:381
read_pages+0x193/0x1110 mm/readahead.c:160
page_cache_ra_unbounded+0x901/0x9f0 mm/readahead.c:273
do_page_cache_ra mm/readahead.c:303 [inline]
force_page_cache_ra+0x3b1/0x4b0 mm/readahead.c:332
force_page_cache_readahead mm/internal.h:347 [inline]
generic_fadvise+0x6b0/0xa90 mm/fadvise.c:106
vfs_fadvise mm/fadvise.c:185 [inline]
ksys_fadvise64_64 mm/fadvise.c:199 [inline]
__do_sys_fadvise64 mm/fadvise.c:214 [inline]
__se_sys_fadvise64 mm/fadvise.c:212 [inline]
__x64_sys_fadvise64+0x1fb/0x3a0 mm/fadvise.c:212
x64_sys_call+0xe11/0x3ba0
arch/x86/include/generated/asm/syscalls_64.h:222
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
This is because when ocfs2_extent_map_get_blocks() fails, p_blkno is
uninitialized. So the error log will trigger the above uninit-value
access.
The error log is out-of-date since get_blocks() was removed long time ago.
And the error code will be logged in ocfs2_extent_map_get_blocks() once
ocfs2_get_cluster() fails, so fix this by only logging inode and block.
Link: https://syzkaller.appspot.com/bug?extid=9709e73bae885b05314b
Link: https://lkml.kernel.org/r/20240925090600.3643376-1-joseph.qi@linux.alibaba.com
Fixes:
|
||
|---|---|---|
| .. | ||
| cluster | ||
| dlm | ||
| dlmfs | ||
| acl.c | ||
| acl.h | ||
| alloc.c | ||
| alloc.h | ||
| aops.c | ||
| aops.h | ||
| blockcheck.c | ||
| blockcheck.h | ||
| buffer_head_io.c | ||
| buffer_head_io.h | ||
| dcache.c | ||
| dcache.h | ||
| dir.c | ||
| dir.h | ||
| dlmglue.c | ||
| dlmglue.h | ||
| export.c | ||
| export.h | ||
| extent_map.c | ||
| extent_map.h | ||
| file.c | ||
| file.h | ||
| filecheck.c | ||
| filecheck.h | ||
| heartbeat.c | ||
| heartbeat.h | ||
| inode.c | ||
| inode.h | ||
| ioctl.c | ||
| ioctl.h | ||
| journal.c | ||
| journal.h | ||
| Kconfig | ||
| localalloc.c | ||
| localalloc.h | ||
| locks.c | ||
| locks.h | ||
| Makefile | ||
| mmap.c | ||
| mmap.h | ||
| move_extents.c | ||
| move_extents.h | ||
| namei.c | ||
| namei.h | ||
| ocfs1_fs_compat.h | ||
| ocfs2_fs.h | ||
| ocfs2_ioctl.h | ||
| ocfs2_lockid.h | ||
| ocfs2_lockingver.h | ||
| ocfs2_trace.h | ||
| ocfs2.h | ||
| quota_global.c | ||
| quota_local.c | ||
| quota.h | ||
| refcounttree.c | ||
| refcounttree.h | ||
| reservations.c | ||
| reservations.h | ||
| resize.c | ||
| resize.h | ||
| slot_map.c | ||
| slot_map.h | ||
| stack_o2cb.c | ||
| stack_user.c | ||
| stackglue.c | ||
| stackglue.h | ||
| suballoc.c | ||
| suballoc.h | ||
| super.c | ||
| super.h | ||
| symlink.c | ||
| symlink.h | ||
| sysfile.c | ||
| sysfile.h | ||
| uptodate.c | ||
| uptodate.h | ||
| xattr.c | ||
| xattr.h | ||