> 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. > You should put a proper fix tag to be applied the corresponding stable tree. See https://www.kernel.org/doc/html/latest/process/submitting-patches.html Fixes: 4b5f49079c52 ("scsi: ufs: ufshpb: L2P map management for HPB read") Best Regards, Chanho Park > Signed-off-by: Daejun Park <daejun7.park@xxxxxxxxxxx> > --- > drivers/scsi/ufs/ufshpb.c | 19 +++++++------------ > 1 file changed, 7 insertions(+), 12 deletions(-) > > 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)) > -- > 2.25.1 >