Skip to content

Commit

Permalink
RDMA/restrack: Consolidate task name updates in one place
Browse files Browse the repository at this point in the history
Unify task update and kernel name set in one place.

Reviewed-by: Artemy Kovalyov <artemyko@mellanox.com>
Reviewed-by: Yossi Itigin <yosefe@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Leon Romanovsky authored and Jason Gunthorpe committed Oct 5, 2018
1 parent 363ad35 commit 2165fc2
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 17 deletions.
10 changes: 2 additions & 8 deletions drivers/infiniband/core/cma.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion drivers/infiniband/core/cq.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
13 changes: 9 additions & 4 deletions drivers/infiniband/core/restrack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions drivers/infiniband/core/verbs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
}

Expand Down
4 changes: 2 additions & 2 deletions include/rdma/restrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 2165fc2

Please sign in to comment.