Patch "fat: fix using uninitialized fields of fat_inode/fsinfo_inode" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
fat: fix using uninitialized fields of fat_inode/fsinfo_inode
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
fat-fix-using-uninitialized-fields-of-fat_inode-fsinfo_inode.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c0d0e351285161a515396b7b1ee53ec9ffd97e3cMon Sep 17 00:00:00 2001
From: OGAWA Hirofumi <[email protected]>
Date: Thu, 9 Mar 2017 16:17:37 -0800
Subject: fat: fix using uninitialized fields of fat_inode/fsinfo_inode
From: OGAWA Hirofumi <[email protected]>
commit c0d0e351285161a515396b7b1ee53ec9ffd97e3c upstream.
Recently fallocate patch was merged and it uses MSDOS_I(inode)->mmu_private at fat_evict_inode(). However, fat_inode/fsinfo_inode that was introduced in past didn't initialize MSDOS_I(inode) properly.
With those combinations, it became the cause of accessing random entry in FAT area.
--- fs/fat/inode.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
fs/fat/inode.c +12 -1
@@ -1269,6 +1269,16 @@ out:return 0 ; } +static void fat_dummy_inode_init (struct inode *inode) +{ +/* Initialize this dummy inode to work as no-op. */ +MSDOS_I (inode)->mmu_private =0 ; +MSDOS_I (inode)->i_start =0 ; +MSDOS_I (inode)->i_logstart =0 ; +MSDOS_I (inode)->i_attrs =0 ; +MSDOS_I (inode)->i_pos =0 ; +} +static int fat_read_root (struct inode *inode) {struct msdos_sb_info *sbi =MSDOS_SB (inode->i_sb);
@@ -1713,12 +1723,13 @@ int fat_fill_super(struct super_block *s fat_inode =new_inode (sb);if (!fat_inode) goto out_fail; -MSDOS_I (fat_inode)->i_pos =0 ; +fat_dummy_inode_init (fat_inode); sbi->fat_inode = fat_inode; fsinfo_inode =new_inode (sb);if (!fsinfo_inode) goto out_fail; +fat_dummy_inode_init (fsinfo_inode); fsinfo_inode->i_ino =MSDOS_FSINFO_INO ; sbi->fsinfo_inode = fsinfo_inode;insert_inode_hash (fsinfo_inode);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/fat-fix-using-uninitialized-fields-of-fat_inode-fsinfo_inode.patch