Commit b43678ea authored by Bean Huo's avatar Bean Huo Committed by Martin K. Petersen

scsi: ufs: core: Revert "WB is only available on LUN #0 to #7"

Ccommit d3d9c457 ("scsi: ufs: Fix memory corruption by
ufshcd_read_desc_param()") has properly fixed stack overflow issue.

As a result, commit a2fca52e ("scsi: ufs: WB is only available on LUN
#0 to #7") is no longer required. Revert it.

Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: default avatarBean Huo <beanhuo@micron.com>
Link: https://lore.kernel.org/r/20221025222430.277768-2-beanhuo@iokpp.deReviewed-by: default avatarArthur Simchaev <arthur.simchaev@wdc.com>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 25ad6f63
...@@ -1234,8 +1234,7 @@ static ssize_t _pname##_show(struct device *dev, \ ...@@ -1234,8 +1234,7 @@ static ssize_t _pname##_show(struct device *dev, \
struct scsi_device *sdev = to_scsi_device(dev); \ struct scsi_device *sdev = to_scsi_device(dev); \
struct ufs_hba *hba = shost_priv(sdev->host); \ struct ufs_hba *hba = shost_priv(sdev->host); \
u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun); \ u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun); \
if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, \ if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun)) \
_duname##_DESC_PARAM##_puname)) \
return -EINVAL; \ return -EINVAL; \
return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \ return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \
lun, _duname##_DESC_PARAM##_puname, buf, _size); \ lun, _duname##_DESC_PARAM##_puname, buf, _size); \
......
...@@ -293,16 +293,12 @@ static inline int ufshcd_rpm_put(struct ufs_hba *hba) ...@@ -293,16 +293,12 @@ static inline int ufshcd_rpm_put(struct ufs_hba *hba)
* @lun: LU number to check * @lun: LU number to check
* @return: true if the lun has a matching unit descriptor, false otherwise * @return: true if the lun has a matching unit descriptor, false otherwise
*/ */
static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, u8 lun)
u8 lun, u8 param_offset)
{ {
if (!dev_info || !dev_info->max_lu_supported) { if (!dev_info || !dev_info->max_lu_supported) {
pr_err("Max General LU supported by UFS isn't initialized\n"); pr_err("Max General LU supported by UFS isn't initialized\n");
return false; return false;
} }
/* WB is available only for the logical unit from 0 to 7 */
if (param_offset == UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS)
return lun < UFS_UPIU_MAX_WB_LUN_ID;
return lun == UFS_UPIU_RPMB_WLUN || (lun < dev_info->max_lu_supported); return lun == UFS_UPIU_RPMB_WLUN || (lun < dev_info->max_lu_supported);
} }
......
...@@ -3608,7 +3608,7 @@ static inline int ufshcd_read_unit_desc_param(struct ufs_hba *hba, ...@@ -3608,7 +3608,7 @@ static inline int ufshcd_read_unit_desc_param(struct ufs_hba *hba,
* Unit descriptors are only available for general purpose LUs (LUN id * Unit descriptors are only available for general purpose LUs (LUN id
* from 0 to 7) and RPMB Well known LU. * from 0 to 7) and RPMB Well known LU.
*/ */
if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, param_offset)) if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun))
return -EOPNOTSUPP; return -EOPNOTSUPP;
return ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun, return ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment