Commit b4d0c33a authored by Mike Christie's avatar Mike Christie Committed by Martin K. Petersen
Browse files

scsi: sd: Fix sshdr use in sd_spinup_disk



If scsi_execute_cmd returns < 0, it doesn't initialize the sshdr, so we
shouldn't access the sshdr. If it returns 0, then the cmd executed
successfully, so there is no need to check the sshdr. This has us access
the sshdr when we get a return value > 0.

Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
Link: https://lore.kernel.org/r/20231004210013.5601-3-michael.christie@oracle.com


Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarMartin Wilck <mwilck@suse.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent bd593bd2
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -2180,6 +2180,7 @@ sd_spinup_disk(struct scsi_disk *sdkp)
						      sdkp->max_retries,
						      &exec_args);

			if (the_result > 0) {
				/*
				 * If the drive has indicated to us that it
				 * doesn't have any media in it, don't bother
@@ -2187,12 +2188,13 @@ sd_spinup_disk(struct scsi_disk *sdkp)
				 */
				if (media_not_present(sdkp, &sshdr)) {
					if (media_was_present)
					sd_printk(KERN_NOTICE, sdkp, "Media removed, stopped polling\n");
						sd_printk(KERN_NOTICE, sdkp,
							  "Media removed, stopped polling\n");
					return;
				}

			if (the_result)
				sense_valid = scsi_sense_valid(&sshdr);
			}
			retries++;
		} while (retries < 3 &&
			 (!scsi_status_is_good(the_result) ||