RDMA/restrack: Consolidate task name updates in one place
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 2 Oct 2018 08:48:02 +0000 (11:48 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 5 Oct 2018 22:07:39 +0000 (16:07 -0600)
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>
drivers/infiniband/core/cma.c
drivers/infiniband/core/cq.c
drivers/infiniband/core/restrack.c
drivers/infiniband/core/verbs.c
include/rdma/restrack.h

index 897aac68158b12047164fc91660795367a5d81ff..f117b755c4c22eff73447b5342657f9b98bb9062 100644 (file)
@@ -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;
index 9271f72900052aa7007727364c4746f7e94675f3..b1e5365ddafa54ea842244edd7003837e9a8a88a 100644 (file)
@@ -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) {
index b02d43988e16467cc332e87c67d0b660b915f42f..035af568ba64fa89011bd7f76ec567bbca22e563 100644 (file)
@@ -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);
index 1e7ad5e0a46e36d204b13d50beca0ca05097eaea..65a7e0b44ad7eda55826778e6fb49eb10d64a9a3 100644 (file)
@@ -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);
        }
 
index 0bddbbdbaf7c31dda99aecdf0784395c8dc5cee9..2638fa7cd702178afcd1d8bb7a8cdf464d4f2372 100644 (file)
@@ -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