Index: sys/ofed/drivers/infiniband/core/ib_ucma.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_ucma.c +++ sys/ofed/drivers/infiniband/core/ib_ucma.c @@ -226,7 +226,7 @@ return NULL; mutex_lock(&mut); - mc->id = idr_alloc(&multicast_idr, mc, 0, 0, GFP_KERNEL); + mc->id = idr_alloc(&multicast_idr, NULL, 0, 0, GFP_KERNEL); mutex_unlock(&mut); if (mc->id < 0) goto error; @@ -1384,6 +1384,10 @@ goto err3; } + mutex_lock(&mut); + idr_replace(&multicast_idr, mc, mc->id); + mutex_unlock(&mut); + mutex_unlock(&file->mut); ucma_put_ctx(ctx); return 0;