On Wed, Dec 30, 2020 at 5:47 AM Viswas G <Viswas.G@xxxxxxxxxxxxxxxxx> wrote: > > From: akshatzen <akshatzen@xxxxxxxxxx> > > Tag is not free'd in NVMD get/set data request failure scenario, > which would have caused tag leak each time the request fails. > > Signed-off-by: akshatzen <akshatzen@xxxxxxxxxx> > Signed-off-by: Viswas G <Viswas.G@xxxxxxxxxxxxx> > Signed-off-by: Ruksar Devadi <Ruksar.devadi@xxxxxxxxxxxxx> > Signed-off-by: Radha Ramachandran <radha@xxxxxxxxxx> Acked-by: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxx> Thx > --- > drivers/scsi/pm8001/pm8001_hwi.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c > index f147193d67bd..9cd6a654f8b2 100644 > --- a/drivers/scsi/pm8001/pm8001_hwi.c > +++ b/drivers/scsi/pm8001/pm8001_hwi.c > @@ -3038,8 +3038,8 @@ void pm8001_mpi_set_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) > complete(pm8001_ha->nvmd_completion); > pm8001_dbg(pm8001_ha, MSG, "Set nvm data complete!\n"); > if ((dlen_status & NVMD_STAT) != 0) { > - pm8001_dbg(pm8001_ha, FAIL, "Set nvm data error!\n"); > - return; > + pm8001_dbg(pm8001_ha, FAIL, "Set nvm data error %x\n", > + dlen_status); > } > ccb->task = NULL; > ccb->ccb_tag = 0xFFFFFFFF; > @@ -3062,11 +3062,17 @@ pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) > > pm8001_dbg(pm8001_ha, MSG, "Get nvm data complete!\n"); > if ((dlen_status & NVMD_STAT) != 0) { > - pm8001_dbg(pm8001_ha, FAIL, "Get nvm data error!\n"); > + pm8001_dbg(pm8001_ha, FAIL, "Get nvm data error %x\n", > + dlen_status); > complete(pm8001_ha->nvmd_completion); > + /* We should free tag during failure also, the tag is not being > + * free'd by requesting path anywhere. > + */ > + ccb->task = NULL; > + ccb->ccb_tag = 0xFFFFFFFF; > + pm8001_tag_free(pm8001_ha, tag); > return; > } > - > if (ir_tds_bn_dps_das_nvm & IPMode) { > /* indirect mode - IR bit set */ > pm8001_dbg(pm8001_ha, MSG, "Get NVMD success, IR=1\n"); > -- > 2.16.3 >