Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

IB/cm: Release previously acquired reference counter in the cm_id_priv

In failure flow, the reference counter acquired was not released,
and the following error was reported:

drivers/infiniband/core/cm.c:3373 cm_lap_handler() warn: inconsistent
refcounting 'cm_id_priv->refcount.refs.counter':

Fixes: 7345201c3963 ("IB/cm: Improve the calling of cm_init_av_for_lap and cm_init_av_by_path")
Link: https://lore.kernel.org/r/7615f23bbb5c5b66d03f6fa13e1c99d51dae6916.1642581448.git.leonro@nvidia.com
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Zhang <markzhang@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>

authored by

Mark Zhang and committed by
Jason Gunthorpe
b856101a a75badeb

+1 -1
+1 -1
drivers/infiniband/core/cm.c
··· 3322 3322 ret = cm_init_av_by_path(param->alternate_path, NULL, &alt_av); 3323 3323 if (ret) { 3324 3324 rdma_destroy_ah_attr(&ah_attr); 3325 - return -EINVAL; 3325 + goto deref; 3326 3326 } 3327 3327 3328 3328 spin_lock_irq(&cm_id_priv->lock);