Patch "hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occur" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occur

to the 6.12-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:
     hwmon-drivetemp-fix-driver-producing-garbage-data-wh.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c556c4148cfcffdc1f4061241f208c28155c2f04
Author: Daniil Stas <daniil.stas@xxxxxxxxxx>
Date:   Sun Jan 5 21:36:18 2025 +0000

    hwmon: (drivetemp) Fix driver producing garbage data when SCSI errors occur
    
    [ Upstream commit 82163d63ae7a4c36142cd252388737205bb7e4b9 ]
    
    scsi_execute_cmd() function can return both negative (linux codes) and
    positive (scsi_cmnd result field) error codes.
    
    Currently the driver just passes error codes of scsi_execute_cmd() to
    hwmon core, which is incorrect because hwmon only checks for negative
    error codes. This leads to hwmon reporting uninitialized data to
    userspace in case of SCSI errors (for example if the disk drive was
    disconnected).
    
    This patch checks scsi_execute_cmd() output and returns -EIO if it's
    error code is positive.
    
    Fixes: 5b46903d8bf37 ("hwmon: Driver for disk and solid state drives with temperature sensors")
    Signed-off-by: Daniil Stas <daniil.stas@xxxxxxxxxx>
    Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
    Cc: Chris Healy <cphealy@xxxxxxxxx>
    Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>
    Cc: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Cc: Bart Van Assche <bvanassche@xxxxxxx>
    Cc: linux-kernel@xxxxxxxxxxxxxxx
    Cc: linux-scsi@xxxxxxxxxxxxxxx
    Cc: linux-ide@xxxxxxxxxxxxxxx
    Cc: linux-hwmon@xxxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/20250105213618.531691-1-daniil.stas@xxxxxxxxxx
    [groeck: Avoid inline variable declaration for portability]
    Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/hwmon/drivetemp.c b/drivers/hwmon/drivetemp.c
index 6bdd21aa005a..2a4ec55ddb47 100644
--- a/drivers/hwmon/drivetemp.c
+++ b/drivers/hwmon/drivetemp.c
@@ -165,6 +165,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 {
 	u8 scsi_cmd[MAX_COMMAND_SIZE];
 	enum req_op op;
+	int err;
 
 	memset(scsi_cmd, 0, sizeof(scsi_cmd));
 	scsi_cmd[0] = ATA_16;
@@ -192,8 +193,11 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 	scsi_cmd[12] = lba_high;
 	scsi_cmd[14] = ata_command;
 
-	return scsi_execute_cmd(st->sdev, scsi_cmd, op, st->smartdata,
-				ATA_SECT_SIZE, HZ, 5, NULL);
+	err = scsi_execute_cmd(st->sdev, scsi_cmd, op, st->smartdata,
+			       ATA_SECT_SIZE, HZ, 5, NULL);
+	if (err > 0)
+		err = -EIO;
+	return err;
 }
 
 static int drivetemp_ata_command(struct drivetemp_data *st, u8 feature,




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux