Commit de48aad2 authored by Chuck Lever's avatar Chuck Lever Committed by Anna Schumaker
Browse files

rpcrdma: Device kref is over-incremented on error from xa_alloc



If the device's reference count is too high, the device completion
callback never fires.

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 47ac09b9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -62,9 +62,9 @@ int rpcrdma_rn_register(struct ib_device *device,
	if (!rd || test_bit(RPCRDMA_RD_F_REMOVING, &rd->rd_flags))
		return -ENETUNREACH;

	kref_get(&rd->rd_kref);
	if (xa_alloc(&rd->rd_xa, &rn->rn_index, rn, xa_limit_32b, GFP_KERNEL) < 0)
		return -ENOMEM;
	kref_get(&rd->rd_kref);
	rn->rn_done = done;
	return 0;
}