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: Jason Gunthorpe <jgg@nvidia.com>
Date: 2021-04-08 12:16:11
Also in: linux-rdma, linux-s390, lkml

On Wed, Apr 07, 2021 at 03:44:35PM +0000, Parav Pandit wrote:
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.

The CM using ULPs have a different issue though..

Jason
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help