| From aaf15f8c6de932861f1fce6aeec6a89ac0e354b6 Mon Sep 17 00:00:00 2001 |
| From: Bart Van Assche <bvanassche@acm.org> |
| Date: Sun, 21 Feb 2021 18:10:42 -0800 |
| Subject: scsi: sd: Fix Opal support |
| |
| From: Bart Van Assche <bvanassche@acm.org> |
| |
| commit aaf15f8c6de932861f1fce6aeec6a89ac0e354b6 upstream. |
| |
| The SCSI core has been modified recently such that it only processes PM |
| requests if rpm_status != RPM_ACTIVE. Since some Opal requests are |
| submitted while rpm_status != RPM_ACTIVE, set flag RQF_PM for Opal |
| requests. |
| |
| See also https://bugzilla.kernel.org/show_bug.cgi?id=211227. |
| |
| [mkp: updated sha for PM patch] |
| |
| Link: https://lore.kernel.org/r/20210222021042.3534-1-bvanassche@acm.org |
| Fixes: d80210f25ff0 ("sd: add support for TCG OPAL self encrypting disks") |
| Fixes: e6044f714b25 ("scsi: core: Only process PM requests if rpm_status != RPM_ACTIVE") |
| Cc: chriscjsus@yahoo.com |
| Cc: Jens Axboe <axboe@kernel.dk> |
| Cc: Alan Stern <stern@rowland.harvard.edu> |
| Cc: stable@vger.kernel.org |
| Reported-by: chriscjsus@yahoo.com |
| Tested-by: chriscjsus@yahoo.com |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Bart Van Assche <bvanassche@acm.org> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/scsi/sd.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/scsi/sd.c |
| +++ b/drivers/scsi/sd.c |
| @@ -707,9 +707,9 @@ static int sd_sec_submit(void *data, u16 |
| put_unaligned_be16(spsp, &cdb[2]); |
| put_unaligned_be32(len, &cdb[6]); |
| |
| - ret = scsi_execute_req(sdev, cdb, |
| - send ? DMA_TO_DEVICE : DMA_FROM_DEVICE, |
| - buffer, len, NULL, SD_TIMEOUT, sdkp->max_retries, NULL); |
| + ret = scsi_execute(sdev, cdb, send ? DMA_TO_DEVICE : DMA_FROM_DEVICE, |
| + buffer, len, NULL, NULL, SD_TIMEOUT, sdkp->max_retries, 0, |
| + RQF_PM, NULL); |
| return ret <= 0 ? ret : -EIO; |
| } |
| #endif /* CONFIG_BLK_SED_OPAL */ |