Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2165fc26 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Jason Gunthorpe
Browse files

RDMA/restrack: Consolidate task name updates in one place



Unify task update and kernel name set in one place.

Reviewed-by: default avatarArtemy Kovalyov <artemyko@mellanox.com>
Reviewed-by: default avatarYossi Itigin <yosefe@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 363ad355
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -875,10 +875,7 @@ struct rdma_cm_id *__rdma_create_id(struct net *net,
	if (!id_priv)
		return ERR_PTR(-ENOMEM);

	if (caller)
		id_priv->res.kern_name = caller;
	else
		rdma_restrack_set_task(&id_priv->res, current);
	rdma_restrack_set_task(&id_priv->res, caller);
	id_priv->res.type = RDMA_RESTRACK_CM_ID;
	id_priv->state = RDMA_CM_IDLE;
	id_priv->id.context = context;
@@ -3945,10 +3942,7 @@ int __rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param,

	id_priv = container_of(id, struct rdma_id_private, id);

	if (caller)
		id_priv->res.kern_name = caller;
	else
		rdma_restrack_set_task(&id_priv->res, current);
	rdma_restrack_set_task(&id_priv->res, caller);

	if (!cma_comp(id_priv, RDMA_CM_CONNECT))
		return -EINVAL;
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ struct ib_cq *__ib_alloc_cq(struct ib_device *dev, void *private,
		goto out_destroy_cq;

	cq->res.type = RDMA_RESTRACK_CQ;
	cq->res.kern_name = caller;
	rdma_restrack_set_task(&cq->res, caller);
	rdma_restrack_add(&cq->res);

	switch (cq->poll_ctx) {
+9 −4
Original line number Diff line number Diff line
@@ -156,12 +156,17 @@ static bool res_is_user(struct rdma_restrack_entry *res)
}

void rdma_restrack_set_task(struct rdma_restrack_entry *res,
			    struct task_struct *task)
			    const char *caller)
{
	if (caller) {
		res->kern_name = caller;
		return;
	}

	if (res->task)
		put_task_struct(res->task);
	get_task_struct(task);
	res->task = task;
	get_task_struct(current);
	res->task = current;
}
EXPORT_SYMBOL(rdma_restrack_set_task);

@@ -177,7 +182,7 @@ void rdma_restrack_add(struct rdma_restrack_entry *res)

	if (res_is_user(res)) {
		if (!res->task)
			rdma_restrack_set_task(res, current);
			rdma_restrack_set_task(res, NULL);
		res->kern_name = NULL;
	} else {
		set_kern_name(res);
+2 −2
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ struct ib_pd *__ib_alloc_pd(struct ib_device *device, unsigned int flags,
	}

	pd->res.type = RDMA_RESTRACK_PD;
	pd->res.kern_name = caller;
	rdma_restrack_set_task(&pd->res, caller);
	rdma_restrack_add(&pd->res);

	if (mr_access_flags) {
@@ -1889,7 +1889,7 @@ struct ib_cq *__ib_create_cq(struct ib_device *device,
		cq->cq_context    = cq_context;
		atomic_set(&cq->usecnt, 0);
		cq->res.type = RDMA_RESTRACK_CQ;
		cq->res.kern_name = caller;
		rdma_restrack_set_task(&cq->res, caller);
		rdma_restrack_add(&cq->res);
	}

+2 −2
Original line number Diff line number Diff line
@@ -173,10 +173,10 @@ int rdma_restrack_put(struct rdma_restrack_entry *res);
/**
 * rdma_restrack_set_task() - set the task for this resource
 * @res:  resource entry
 * @task: task struct
 * @caller: kernel name, the current task will be used if the caller is NULL.
 */
void rdma_restrack_set_task(struct rdma_restrack_entry *res,
			    struct task_struct *task);
			    const char *caller);

/*
 * Helper functions for rdma drivers when filling out