Re: [syzbot] Re: [syzbot] [hfs?] KMSAN: uninit-value in hfs_revalidate_dentry

From: syzbot
Date: Sun Jun 09 2024 - 05:15:49 EST


For archival purposes, forwarding an incoming command email to
linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx.

***

Subject: Re: [syzbot] [hfs?] KMSAN: uninit-value in hfs_revalidate_dentry
Author: chao@xxxxxxxxxx

On 2023/2/10 20:21, syzbot wrote:
> syzbot has found a reproducer for the following issue on:
>
> HEAD commit: 8c89ecf5c13b kmsan: silence -Wmissing-prototypes warnings
> git tree: https://github.com/google/kmsan.git master
> console output: https://syzkaller.appspot.com/x/log.txt?x=10b53fff480000
> kernel config: https://syzkaller.appspot.com/x/.config?x=91d3152219aa6b45
> dashboard link: https://syzkaller.appspot.com/bug?extid=3ae6be33a50b5aae4dab
> compiler: Debian clang version 15.0.7, GNU ld (GNU Binutils for Debian) 2.35.2
> userspace arch: i386
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1409f0b3480000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15c76993480000
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/fa537cffb53c/disk-8c89ecf5.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/5b9d03c04a3e/vmlinux-8c89ecf5.xz
> kernel image: https://storage.googleapis.com/syzbot-assets/55c166dec3af/bzImage-8c89ecf5.xz
> mounted in repro: https://storage.googleapis.com/syzbot-assets/b234e4e5c704/mount_0.gz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+3ae6be33a50b5aae4dab@xxxxxxxxxxxxxxxxxxxxxxxxx

#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 771ed66105de

---
fs/hfs/inode.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 8c34798a0715..744e10b46904 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -200,6 +200,7 @@ struct inode *hfs_new_inode(struct inode *dir, const struct qstr *name, umode_t
HFS_I(inode)->flags = 0;
HFS_I(inode)->rsrc_inode = NULL;
HFS_I(inode)->fs_blocks = 0;
+ HFS_I(inode)->tz_secondswest = sys_tz.tz_minuteswest * 60;
if (S_ISDIR(mode)) {
inode->i_size = 2;
HFS_SB(sb)->folder_count++;
@@ -275,6 +276,8 @@ void hfs_inode_read_fork(struct inode *inode, struct hfs_extent *ext,
for (count = 0, i = 0; i < 3; i++)
count += be16_to_cpu(ext[i].count);
HFS_I(inode)->first_blocks = count;
+ HFS_I(inode)->cached_start = 0;
+ HFS_I(inode)->cached_blocks = 0;

inode->i_size = HFS_I(inode)->phys_size = log_size;
HFS_I(inode)->fs_blocks = (log_size + sb->s_blocksize - 1) >> sb->s_blocksize_bits;
--