Thread (18 messages) flat view 18 messages, 5 authors, 2021-04-09

RE: [PATCH rdma-next 4/8] IB/core: Skip device which doesn't have necessary capabilities

From: Parav Pandit <hidden>
Date: 2021-04-09 12:31:26
Also in: linux-rdma, linux-s390, lkml

From: Jason Gunthorpe <jgg@nvidia.com>
Sent: Thursday, April 8, 2021 5:46 PM
On Wed, Apr 07, 2021 at 03:44:35PM +0000, Parav Pandit wrote:
quoted
quoted
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.
Only cma.c needs a fixing. cm.c also reports EOPNOTSUPP.
I will send the simplified fix through Leon.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help