On Mon, Aug 23, 2021 at 9:28 AM Ajish Koshy <Ajish.Koshy@xxxxxxxxxxxxx> wrote: > > Driver fails to release memory allocated. This will lead > to memory leak during driver removal. > > Signed-off-by: Ajish Koshy <Ajish.Koshy@xxxxxxxxxxxxx> > Signed-off-by: Viswas G <Viswas.G@xxxxxxxxxxxxx> looks ok. Acked-by: Jack Wang <jinpu.wang@xxxxxxxxx> > --- > drivers/scsi/pm8001/pm8001_init.c | 11 +++++++++++ > drivers/scsi/pm8001/pm8001_sas.h | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c > index 613455a3e686..7082fecf7ce8 100644 > --- a/drivers/scsi/pm8001/pm8001_init.c > +++ b/drivers/scsi/pm8001/pm8001_init.c > @@ -1199,6 +1199,7 @@ pm8001_init_ccb_tag(struct pm8001_hba_info *pm8001_ha, struct Scsi_Host *shost, > goto err_out; > > /* Memory region for ccb_info*/ > + pm8001_ha->ccb_count = ccb_count; > pm8001_ha->ccb_info = > kcalloc(ccb_count, sizeof(struct pm8001_ccb_info), GFP_KERNEL); > if (!pm8001_ha->ccb_info) { > @@ -1260,6 +1261,16 @@ static void pm8001_pci_remove(struct pci_dev *pdev) > tasklet_kill(&pm8001_ha->tasklet[j]); > #endif > scsi_host_put(pm8001_ha->shost); > + > + for (i = 0; i < pm8001_ha->ccb_count; i++) { > + dma_free_coherent(&pm8001_ha->pdev->dev, > + sizeof(struct pm8001_prd) * PM8001_MAX_DMA_SG, > + pm8001_ha->ccb_info[i].buf_prd, > + pm8001_ha->ccb_info[i].ccb_dma_handle); > + } > + kfree(pm8001_ha->ccb_info); > + kfree(pm8001_ha->devices); > + > pm8001_free(pm8001_ha); > kfree(sha->sas_phy); > kfree(sha->sas_port); > diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h > index 3274d88a9ccc..7e999768bfd2 100644 > --- a/drivers/scsi/pm8001/pm8001_sas.h > +++ b/drivers/scsi/pm8001/pm8001_sas.h > @@ -518,6 +518,7 @@ struct pm8001_hba_info { > u32 iomb_size; /* SPC and SPCV IOMB size */ > struct pm8001_device *devices; > struct pm8001_ccb_info *ccb_info; > + u32 ccb_count; > #ifdef PM8001_USE_MSIX > int number_of_intr;/*will be used in remove()*/ > char intr_drvname[PM8001_MAX_MSIX_VEC] > -- > 2.27.0 >