Hannes Reinecke 58565f
From: Peilin Ye <yepeilin.cs@gmail.com>
Hannes Reinecke 58565f
Date: Fri, 2 Oct 2020 10:22:23 -0400
Hannes Reinecke 58565f
Subject: [PATCH] block/scsi-ioctl: Fix kernel-infoleak in
Hannes Reinecke 58565f
 scsi_put_cdrom_generic_arg()
Hannes Reinecke 58565f
Git-commit: 6d53a9fe5a1983490bc14b3a64d49fabb4ccc651
Hannes Reinecke 58565f
Patch-mainline: v5.9-rc1
Hannes Reinecke 58565f
References: git-fixes
Hannes Reinecke 58565f
Hannes Reinecke 58565f
scsi_put_cdrom_generic_arg() is copying uninitialized stack memory to
Hannes Reinecke 58565f
userspace, since the compiler may leave a 3-byte hole in the middle of
Hannes Reinecke 58565f
`cgc32`. Fix it by adding a padding field to `struct
Hannes Reinecke 58565f
compat_cdrom_generic_command`.
Hannes Reinecke 58565f
Hannes Reinecke 58565f
Cc: stable@vger.kernel.org
Hannes Reinecke 58565f
Fixes: f3ee6e63a9df ("compat_ioctl: move CDROM_SEND_PACKET handling into scsi")
Hannes Reinecke 58565f
Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
Hannes Reinecke 58565f
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Hannes Reinecke 58565f
Reported-by: syzbot+85433a479a646a064ab3@syzkaller.appspotmail.com
Hannes Reinecke 58565f
Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
Hannes Reinecke 58565f
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Hannes Reinecke 58565f
Acked-by: Hannes Reinecke <hare@suse.com>
Hannes Reinecke 58565f
---
Hannes Reinecke 58565f
 block/scsi_ioctl.c | 1 +
Hannes Reinecke 58565f
 1 file changed, 1 insertion(+)
Hannes Reinecke 58565f
Hannes Reinecke 58565f
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
Hannes Reinecke 58565f
index ef722f04f88a..72108404718f 100644
Hannes Reinecke 58565f
--- a/block/scsi_ioctl.c
Hannes Reinecke 58565f
+++ b/block/scsi_ioctl.c
Hannes Reinecke 58565f
@@ -651,6 +651,7 @@ struct compat_cdrom_generic_command {
Hannes Reinecke 58565f
 	compat_int_t	stat;
Hannes Reinecke 58565f
 	compat_caddr_t	sense;
Hannes Reinecke 58565f
 	unsigned char	data_direction;
Hannes Reinecke 58565f
+	unsigned char	pad[3];
Hannes Reinecke 58565f
 	compat_int_t	quiet;
Hannes Reinecke 58565f
 	compat_int_t	timeout;
Hannes Reinecke 58565f
 	compat_caddr_t	reserved[1];
Hannes Reinecke 58565f
-- 
Hannes Reinecke 58565f
2.29.2
Hannes Reinecke 58565f