]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: st: Don't modify unknown block number in MTIOCGET
authorKai Mäkisara <Kai.Makisara@kolumbus.fi>
Wed, 6 Nov 2024 09:57:21 +0000 (11:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Dec 2024 18:48:30 +0000 (19:48 +0100)
[ Upstream commit 5bb2d6179d1a8039236237e1e94cfbda3be1ed9e ]

Struct mtget field mt_blkno -1 means it is unknown. Don't add anything to
it.

Signed-off-by: Kai Mäkisara <Kai.Makisara@kolumbus.fi>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=219419#c14
Link: https://lore.kernel.org/r/20241106095723.63254-2-Kai.Makisara@kolumbus.fi
Reviewed-by: John Meneghini <jmeneghi@redhat.com>
Tested-by: John Meneghini <jmeneghi@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/st.c

index 19bc8c923fce56ce3fcb32a57154be282dc0de51..c08518258f0016b3e7bf2b707f0b71c33c21610c 100644 (file)
@@ -3755,7 +3755,7 @@ static long st_ioctl_common(struct file *file, unsigned int cmd_in, void __user
                    ((STp->density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK);
                mt_status.mt_blkno = STps->drv_block;
                mt_status.mt_fileno = STps->drv_file;
-               if (STp->block_size != 0) {
+               if (STp->block_size != 0 && mt_status.mt_blkno >= 0) {
                        if (STps->rw == ST_WRITING)
                                mt_status.mt_blkno +=
                                    (STp->buffer)->buffer_bytes / STp->block_size;