[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210408121601.GR7405@nvidia.com>
Date: Thu, 8 Apr 2021 09:16:01 -0300
From: Jason Gunthorpe <jgg@...dia.com>
To: Parav Pandit <parav@...dia.com>
Cc: Leon Romanovsky <leon@...nel.org>,
Doug Ledford <dledford@...hat.com>,
"David S. Miller" <davem@...emloft.net>,
Dennis Dalessandro <dennis.dalessandro@...nelisnetworks.com>,
Jakub Kicinski <kuba@...nel.org>,
Karsten Graul <kgraul@...ux.ibm.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-rdma@...r.kernel.org" <linux-rdma@...r.kernel.org>,
"linux-s390@...r.kernel.org" <linux-s390@...r.kernel.org>,
Mike Marciniszyn <mike.marciniszyn@...nelisnetworks.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"rds-devel@....oracle.com" <rds-devel@....oracle.com>,
Santosh Shilimkar <santosh.shilimkar@...cle.com>
Subject: Re: [PATCH rdma-next 4/8] IB/core: Skip device which doesn't have
necessary capabilities
On Wed, Apr 07, 2021 at 03:44:35PM +0000, Parav Pandit wrote:
> > If it returns EOPNOTUPP then the remove is never called so if it allocated
> > memory and left it allocated then it is leaking memory.
> >
> I probably confused you. There is no leak today because add_one
> allocates memory, and later on when SA/CM etc per port cap is not
> present, it is unused left there which is freed on remove_one().
> Returning EOPNOTUPP is fine at start of add_one() before allocation.
Most of ULPs are OK, eg umad does:
umad_dev = kzalloc(struct_size(umad_dev, ports, e - s + 1), GFP_KERNEL);
if (!umad_dev)
return -ENOMEM;
for (i = s; i <= e; ++i) {
if (!rdma_cap_ib_mad(device, i))
continue;
if (!count) {
ret = -EOPNOTSUPP;
goto free;
free:
/* balances kref_init */
ib_umad_dev_put(umad_dev);
It looks like only cm.c and cma.c need fixing, just fix those two.
The CM using ULPs have a different issue though..
Jason
Powered by blists - more mailing lists