Re: [PATCH v1] scsi: ufs: use an generic error code in ufshcd_set_dev_pwr_mode

From: Bart Van Assche
Date: Tue Jan 18 2022 - 19:45:48 EST


On 1/17/22 02:29, Kiwoong Kim wrote:
The return value of ufshcd_set_dev_pwr_mode is given to
device pm core. However, the function currently returns a result
in scsi command and the device pm core doesn't understand it.
It might lead to unexpected behaviors of user land. I found
the return value led to platform reset in Android.

This patch is to use an generic code for SSU failures.

Signed-off-by: Kiwoong Kim <kwmad.kim@xxxxxxxxxxx>
---
drivers/scsi/ufs/ufshcd.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 1049e41..a60816c 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -8669,6 +8669,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
pwr_mode, ret);
if (ret > 0 && scsi_sense_valid(&sshdr))
scsi_print_sense_hdr(sdp, NULL, &sshdr);
+ ret = -EIO;
}
if (!ret)

Shouldn't "ret = -EIO" only be executed if ret > 0? Additionally, please update the documentation of ufshcd_set_dev_pwr_mode(). I'm referring to the following comment: "Returns non-zero if failed to set the requested power mode".

Thanks,

Bart.