| From 2e4fbbc3bcd428460f1e1bf27400203432b00e47 Mon Sep 17 00:00:00 2001 |
| From: Oliver Neukum <oneukum@suse.com> |
| Date: Tue, 3 Sep 2019 12:18:39 +0200 |
| Subject: [PATCH] scsi: sd: Ignore a failure to sync cache due to lack of |
| authorization |
| |
| commit 21e3d6c81179bbdfa279efc8de456c34b814cfd2 upstream. |
| |
| I've got a report about a UAS drive enclosure reporting back Sense: Logical |
| unit access not authorized if the drive it holds is password protected. |
| While the drive is obviously unusable in that state as a mass storage |
| device, it still exists as a sd device and when the system is asked to |
| perform a suspend of the drive, it will be sent a SYNCHRONIZE CACHE. If |
| that fails due to password protection, the error must be ignored. |
| |
| Cc: <stable@vger.kernel.org> |
| Link: https://lore.kernel.org/r/20190903101840.16483-1-oneukum@suse.com |
| Signed-off-by: Oliver Neukum <oneukum@suse.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c |
| index a3406bd62391..19b53ce14822 100644 |
| --- a/drivers/scsi/sd.c |
| +++ b/drivers/scsi/sd.c |
| @@ -1654,7 +1654,8 @@ static int sd_sync_cache(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr) |
| /* we need to evaluate the error return */ |
| if (scsi_sense_valid(sshdr) && |
| (sshdr->asc == 0x3a || /* medium not present */ |
| - sshdr->asc == 0x20)) /* invalid command */ |
| + sshdr->asc == 0x20 || /* invalid command */ |
| + (sshdr->asc == 0x74 && sshdr->ascq == 0x71))) /* drive is password locked */ |
| /* this is no error here */ |
| return 0; |
| |
| -- |
| 2.7.4 |
| |