Re: [PATCH for-rc] RDMA/qder: Fix memory leak of iwcm pointer

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

 



On Tue, Apr 23, 2019 at 09:24:07AM +0300, Kamal Heib wrote:
> 
> 
> On 4/22/19 6:40 PM, Jason Gunthorpe wrote:
> > On Mon, Apr 22, 2019 at 05:00:19PM +0300, Kamal Heib wrote:
> >> Make sure to release the iwcm pointer that is allocated in
> >> qedr_iw_register_device() but never released.
> >>
> >> Fixes: e6a38c54faf3 ("RDMA/qedr: Add support for registering an iWARP device")
> >> Signed-off-by: Kamal Heib <kamalheib1@xxxxxxxxx>
> >>  drivers/infiniband/hw/qedr/main.c | 10 +++++++++-
> >>  1 file changed, 9 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c
> >> index 996d9ecd93e0..567f55178379 100644
> >> +++ b/drivers/infiniband/hw/qedr/main.c
> >> @@ -293,7 +293,13 @@ static int qedr_register_device(struct qedr_dev *dev)
> >>  	ib_set_device_ops(&dev->ibdev, &qedr_dev_ops);
> >>  
> >>  	dev->ibdev.driver_id = RDMA_DRIVER_QEDR;
> >> -	return ib_register_device(&dev->ibdev, "qedr%d");
> >> +	rc = ib_register_device(&dev->ibdev, "qedr%d");
> >> +	if (rc) {
> >> +		if (IS_IWARP(dev))
> >> +			kfree(dev->ibdev.iwcm);
> >> +	}
> >> +
> >> +	return rc;
> >>  }
> >>  
> >>  /* This function allocates fast-path status block memory */
> >> @@ -937,6 +943,8 @@ static void qedr_remove(struct qedr_dev *dev)
> >>  	 * of the registered clients.
> >>  	 */
> >>  	ib_unregister_device(&dev->ibdev);
> >> +	if (IS_IWARP(dev))
> >> +		kfree(dev->ibdev.iwcm);
> > 
> > This should probably just be in a dealloc_driver callback instead of
> > duplicated
> > 
> > Jason
> > 
> 
> I don't think so

Why? That is is the defined place to free memory linked to the struct
ib_device

> I think that we need to define a new interface in the core (iwcm.c)
> for the IWARP devices to use when {allocate, setting ops to,
> release} iwcm, what do you think?

Why?

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux