| From 4e45893bcda29bb2a129e7992345e4a15ba240a8 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 13 Aug 2025 00:17:44 +0900 |
| Subject: minixfs: Verify inode mode when loading from disk |
| |
| From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| |
| [ Upstream commit 73861970938ad1323eb02bbbc87f6fbd1e5bacca ] |
| |
| The inode mode loaded from corrupted disk can be invalid. Do like what |
| commit 0a9e74051313 ("isofs: Verify inode mode when loading from disk") |
| does. |
| |
| Reported-by: syzbot <syzbot+895c23f6917da440ed0d@syzkaller.appspotmail.com> |
| Closes: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d |
| Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| Link: https://lore.kernel.org/ec982681-84b8-4624-94fa-8af15b77cbd2@I-love.SAKURA.ne.jp |
| Signed-off-by: Christian Brauner <brauner@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/minix/inode.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/minix/inode.c b/fs/minix/inode.c |
| index da8bdd1712a70..9da6903e306c6 100644 |
| --- a/fs/minix/inode.c |
| +++ b/fs/minix/inode.c |
| @@ -470,8 +470,14 @@ void minix_set_inode(struct inode *inode, dev_t rdev) |
| inode->i_op = &minix_symlink_inode_operations; |
| inode_nohighmem(inode); |
| inode->i_mapping->a_ops = &minix_aops; |
| - } else |
| + } else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || |
| + S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { |
| init_special_inode(inode, inode->i_mode, rdev); |
| + } else { |
| + printk(KERN_DEBUG "MINIX-fs: Invalid file type 0%04o for inode %lu.\n", |
| + inode->i_mode, inode->i_ino); |
| + make_bad_inode(inode); |
| + } |
| } |
| |
| /* |
| -- |
| 2.51.0 |
| |