Message ID | 252651381.41652940482659.JavaMail.epsvc@epcpadp4 |
---|---|
State | New |
Headers | show |
Series | scsi: ufs: Fix referencing invalid rsp field | expand |
> This is a patch for fixing referencing sense data when it is invalid. > When the length of the data segment is 0, there is no valid information in > the rsp field, so ufshpb_rsp_upiu() is returned without additional > operation. > > Signed-off-by: Daejun Park <daejun7.park@samsung.com> Acked-by: Avri Altman <avri.altman@wdc.com>
On Thu, 19 May 2022 15:05:29 +0900, Daejun Park wrote: > This is a patch for fixing referencing sense data when it is invalid. > When the length of the data segment is 0, there is no valid information in > the rsp field, so ufshpb_rsp_upiu() is returned without additional > operation. > > Applied to 5.18/scsi-fixes, thanks! [1/1] scsi: ufs: Fix referencing invalid rsp field https://git.kernel.org/mkp/scsi/c/d5d92b644084
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index f1f65383e97d..8882b47f76d3 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -1304,6 +1304,13 @@ void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) struct utp_hpb_rsp *rsp_field = &lrbp->ucd_rsp_ptr->hr; int data_seg_len; + data_seg_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2) + & MASK_RSP_UPIU_DATA_SEG_LEN; + + /* If data segment length is zero, rsp_field is not valid */ + if (!data_seg_len) + return; + if (unlikely(lrbp->lun != rsp_field->lun)) { struct scsi_device *sdev; bool found = false; @@ -1338,18 +1345,6 @@ void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) return; } - data_seg_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2) - & MASK_RSP_UPIU_DATA_SEG_LEN; - - /* To flush remained rsp_list, we queue the map_work task */ - if (!data_seg_len) { - if (!ufshpb_is_general_lun(hpb->lun)) - return; - - ufshpb_kick_map_work(hpb); - return; - } - BUILD_BUG_ON(sizeof(struct utp_hpb_rsp) != UTP_HPB_RSP_SIZE); if (!ufshpb_is_hpb_rsp_valid(hba, lrbp, rsp_field))
This is a patch for fixing referencing sense data when it is invalid. When the length of the data segment is 0, there is no valid information in the rsp field, so ufshpb_rsp_upiu() is returned without additional operation. Signed-off-by: Daejun Park <daejun7.park@samsung.com> --- drivers/scsi/ufs/ufshpb.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-)