scsi: ufs: core: Revert "WB is only available on LUN #0 to #7"
authorBean Huo <beanhuo@micron.com>
Tue, 25 Oct 2022 22:24:28 +0000 (00:24 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 27 Oct 2022 02:20:50 +0000 (02:20 +0000)
Ccommit d3d9c4570285 ("scsi: ufs: Fix memory corruption by
ufshcd_read_desc_param()") has properly fixed stack overflow issue.

As a result, commit a2fca52ee640 ("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: Bean Huo <beanhuo@micron.com>
Link: https://lore.kernel.org/r/20221025222430.277768-2-beanhuo@iokpp.de
Reviewed-by: Arthur Simchaev <arthur.simchaev@wdc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufs-sysfs.c
drivers/ufs/core/ufshcd-priv.h
drivers/ufs/core/ufshcd.c

index 53aea56d1de135bf39ef2d013c3fe52b85cbe9d1..eb6b278c4e790416d46c7be4efb6006904dbbecc 100644 (file)
@@ -1234,8 +1234,7 @@ static ssize_t _pname##_show(struct device *dev,                  \
        struct scsi_device *sdev = to_scsi_device(dev);                 \
        struct ufs_hba *hba = shost_priv(sdev->host);                   \
        u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun);                    \
-       if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun,            \
-                               _duname##_DESC_PARAM##_puname))         \
+       if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun))           \
                return -EINVAL;                                         \
        return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \
                lun, _duname##_DESC_PARAM##_puname, buf, _size);        \
index f68ca33f6ac78c7ce2fdb656ed51421f7841e102..a9e8e1f5afe7aa8def71d1648904f55ef66d2a35 100644 (file)
@@ -293,16 +293,12 @@ static inline int ufshcd_rpm_put(struct ufs_hba *hba)
  * @lun: LU number to check
  * @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,
-               u8 lun, u8 param_offset)
+static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, u8 lun)
 {
        if (!dev_info || !dev_info->max_lu_supported) {
                pr_err("Max General LU supported by UFS isn't initialized\n");
                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);
 }
 
index 008fc60392fc2769f3ed07bea84dce336c8f60a5..94ae0fb253584001e7eba52de473c0191a936070 100644 (file)
@@ -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
         * 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 ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun,