| From 5cb91f115ced46e6bdc3de90b9f29ec1dc80d3a1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 27 Apr 2021 10:30:11 +0200 |
| Subject: scsi: scsi_dh_alua: Check for negative result value |
| |
| From: Hannes Reinecke <hare@suse.de> |
| |
| [ Upstream commit 7e26e3ea028740f934477ec01ba586ab033c35aa ] |
| |
| scsi_execute() will now return a negative error if there was an error prior |
| to command submission; evaluate that instead if checking for DRIVER_ERROR. |
| |
| [mkp: build fix] |
| |
| Link: https://lore.kernel.org/r/20210427083046.31620-6-hare@suse.de |
| Signed-off-by: Hannes Reinecke <hare@suse.de> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/scsi/device_handler/scsi_dh_alua.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c |
| index 5eff3368143d..c625607a4dfb 100644 |
| --- a/drivers/scsi/device_handler/scsi_dh_alua.c |
| +++ b/drivers/scsi/device_handler/scsi_dh_alua.c |
| @@ -556,12 +556,12 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) |
| kfree(buff); |
| return SCSI_DH_OK; |
| } |
| - if (!scsi_sense_valid(&sense_hdr)) { |
| + if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { |
| sdev_printk(KERN_INFO, sdev, |
| "%s: rtpg failed, result %d\n", |
| ALUA_DH_NAME, retval); |
| kfree(buff); |
| - if (driver_byte(retval) == DRIVER_ERROR) |
| + if (retval < 0) |
| return SCSI_DH_DEV_TEMP_BUSY; |
| return SCSI_DH_IO; |
| } |
| @@ -783,11 +783,11 @@ static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group *pg) |
| retval = submit_stpg(sdev, pg->group_id, &sense_hdr); |
| |
| if (retval) { |
| - if (!scsi_sense_valid(&sense_hdr)) { |
| + if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { |
| sdev_printk(KERN_INFO, sdev, |
| "%s: stpg failed, result %d", |
| ALUA_DH_NAME, retval); |
| - if (driver_byte(retval) == DRIVER_ERROR) |
| + if (retval < 0) |
| return SCSI_DH_DEV_TEMP_BUSY; |
| } else { |
| sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n", |
| -- |
| 2.30.2 |
| |