diff --git a/patches.kernel.org/6.2.12-032-RDMA-irdma-Fix-memory-leak-of-PBLE-objects.patch b/patches.kernel.org/6.2.12-032-RDMA-irdma-Fix-memory-leak-of-PBLE-objects.patch new file mode 100644 index 0000000..580b5ae --- /dev/null +++ b/patches.kernel.org/6.2.12-032-RDMA-irdma-Fix-memory-leak-of-PBLE-objects.patch @@ -0,0 +1,53 @@ +From: Mustafa Ismail +Date: Wed, 15 Mar 2023 09:52:29 -0500 +Subject: [PATCH] RDMA/irdma: Fix memory leak of PBLE objects +References: bsc#1012628 +Patch-mainline: 6.2.12 +Git-commit: b69a6979dbaa2453675fe9c71bdc2497fedb11f9 + +[ Upstream commit b69a6979dbaa2453675fe9c71bdc2497fedb11f9 ] + +On rmmod of irdma, the PBLE object memory is not being freed. PBLE object +memory are not statically pre-allocated at function initialization time +unlike other HMC objects. PBLEs objects and the Segment Descriptors (SD) +for it can be dynamically allocated during scale up and SD's remain +allocated till function deinitialization. + +Fix this leak by adding IRDMA_HMC_IW_PBLE to the iw_hmc_obj_types[] table +and skip pbles in irdma_create_hmc_obj but not in irdma_del_hmc_objects(). + +Fixes: 44d9e52977a1 ("RDMA/irdma: Implement device initialization definitions") +Signed-off-by: Mustafa Ismail +Signed-off-by: Shiraz Saleem +Link: https://lore.kernel.org/r/20230315145231.931-3-shiraz.saleem@intel.com +Signed-off-by: Leon Romanovsky +Signed-off-by: Sasha Levin +Signed-off-by: Jiri Slaby +--- + drivers/infiniband/hw/irdma/hw.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c +index 2e1e2bad..43dfa476 100644 +--- a/drivers/infiniband/hw/irdma/hw.c ++++ b/drivers/infiniband/hw/irdma/hw.c +@@ -41,6 +41,7 @@ static enum irdma_hmc_rsrc_type iw_hmc_obj_types[] = { + IRDMA_HMC_IW_XFFL, + IRDMA_HMC_IW_Q1, + IRDMA_HMC_IW_Q1FL, ++ IRDMA_HMC_IW_PBLE, + IRDMA_HMC_IW_TIMER, + IRDMA_HMC_IW_FSIMC, + IRDMA_HMC_IW_FSIAV, +@@ -827,6 +828,8 @@ static int irdma_create_hmc_objs(struct irdma_pci_f *rf, bool privileged, + info.entry_type = rf->sd_type; + + for (i = 0; i < IW_HMC_OBJ_TYPE_NUM; i++) { ++ if (iw_hmc_obj_types[i] == IRDMA_HMC_IW_PBLE) ++ continue; + if (dev->hmc_info->hmc_obj[iw_hmc_obj_types[i]].cnt) { + info.rsrc_type = iw_hmc_obj_types[i]; + info.count = dev->hmc_info->hmc_obj[info.rsrc_type].cnt; +-- +2.35.3 + diff --git a/series.conf b/series.conf index 9f246a6..421e9cf 100644 --- a/series.conf +++ b/series.conf @@ -2259,6 +2259,7 @@ patches.kernel.org/6.2.12-029-io_uring-complete-request-via-task-work-in-cas.patch patches.kernel.org/6.2.12-030-clk-sprd-set-max_register-according-to-mapping.patch patches.kernel.org/6.2.12-031-RDMA-irdma-Do-not-generate-SW-completions-for-.patch + patches.kernel.org/6.2.12-032-RDMA-irdma-Fix-memory-leak-of-PBLE-objects.patch ######################################################## # Build fixes that apply to the vanilla kernel too.