Skip to content

Commit 2594d5f

Browse files
jankaragregkh
authored andcommitted
isofs: Verify inode mode when loading from disk
commit 0a9e740 upstream. Verify that the inode mode is sane when loading it from the disk to avoid complaints from VFS about setting up invalid inodes. Reported-by: syzbot+895c23f6917da440ed0d@syzkaller.appspotmail.com CC: stable@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/20250709095545.31062-2-jack@suse.cz Acked-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1221602 commit 2594d5f

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

fs/isofs/inode.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1440,9 +1440,16 @@ static int isofs_read_inode(struct inode *inode, int relocated)
14401440
inode->i_op = &page_symlink_inode_operations;
14411441
inode_nohighmem(inode);
14421442
inode->i_data.a_ops = &isofs_symlink_aops;
1443-
} else
1443+
} else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
1444+
S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
14441445
/* XXX - parse_rock_ridge_inode() had already set i_rdev. */
14451446
init_special_inode(inode, inode->i_mode, inode->i_rdev);
1447+
} else {
1448+
printk(KERN_DEBUG "ISOFS: Invalid file type 0%04o for inode %lu.\n",
1449+
inode->i_mode, inode->i_ino);
1450+
ret = -EIO;
1451+
goto fail;
1452+
}
14461453

14471454
ret = 0;
14481455
out:

0 commit comments

Comments
 (0)