ctx = ib_ucm_ctx_get(cmd.id); if (!ctx) { result = -ENOENT; goto done; }
ctx = ib_ucm_ctx_get(file, cmd.id); if (!IS_ERR(ctx)) { result = ib_send_cm_sidr_rep(ctx->cm_id, &param); ib_ucm_ctx_put(ctx); } else result = PTR_ERR(ctx);
static ssize_t ib_ucm_send_sidr_rep(struct ib_ucm_file *file,				    const char __user *inbuf,				    int in_len, int out_len){	struct ib_cm_sidr_rep_param param;	struct ib_ucm_sidr_rep cmd;	struct ib_ucm_context *ctx;	int result;	param.info = NULL;	if (copy_from_user(&cmd, inbuf, sizeof(cmd)))		return -EFAULT;	result = ib_ucm_alloc_data(&param.private_data,				   cmd.data, cmd.data_len);	if (result)		goto done;	result = ib_ucm_alloc_data(&param.info, cmd.info, cmd.info_len);	if (result)		goto done;	param.qp_num	   = cmd.qpn;	param.qkey	     = cmd.qkey;	param.status	   = cmd.status;	param.info_length      = cmd.info_len;	param.private_data_len = cmd.data_len;	ctx = ib_ucm_ctx_get(cmd.id);	if (!ctx) {		result = -ENOENT;		goto done;	} 	down(&ctx->file->mutex);	if (ctx->file != file)		result = -EINVAL;	else		result = ib_send_cm_sidr_rep(ctx->cm_id, &param);	up(&ctx->file->mutex);	ib_ucm_ctx_put(ctx); /* func reference */done:	kfree(param.private_data);	kfree(param.info);	return result;}