Patch "RDMA/irdma: Fix memory leak of PBLE objects" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RDMA/irdma: Fix memory leak of PBLE objects

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rdma-irdma-fix-memory-leak-of-pble-objects.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c2adb354c933ed76b2bcdae16788cf02c670f40b
Author: Mustafa Ismail <mustafa.ismail@xxxxxxxxx>
Date:   Wed Mar 15 09:52:29 2023 -0500

    RDMA/irdma: Fix memory leak of PBLE objects
    
    [ 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 <mustafa.ismail@xxxxxxxxx>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20230315145231.931-3-shiraz.saleem@xxxxxxxxx
    Signed-off-by: Leon Romanovsky <leon@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c
index 2e1e2bad04011..43dfa4761f069 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;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux