RDMA/rxe: Replace missing rxe_pool_get_index_locked
authorBob Pearson <rpearsonhpe@gmail.com>
Mon, 25 Jan 2021 21:16:41 +0000 (15:16 -0600)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 28 Jan 2021 19:29:56 +0000 (15:29 -0400)
One of the pool APIs for when caller is holding lock was not defined but
is declared in rxe_pool.h. This patch adds the definition.

Link: https://lore.kernel.org/r/20210125211641.2694-7-rpearson@hpe.com
Signed-off-by: Bob Pearson <rpearson@hpe.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_pool.c

index 5aa8350..307d898 100644 (file)
@@ -398,15 +398,12 @@ void rxe_elem_release(struct kref *kref)
        atomic_dec(&pool->num_elem);
 }
 
-void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
+void *rxe_pool_get_index_locked(struct rxe_pool *pool, u32 index)
 {
        struct rxe_type_info *info = &rxe_type_info[pool->type];
        struct rb_node *node;
        struct rxe_pool_entry *elem;
-       u8 *obj = NULL;
-       unsigned long flags;
-
-       read_lock_irqsave(&pool->pool_lock, flags);
+       u8 *obj;
 
        node = pool->index.tree.rb_node;
 
@@ -428,6 +425,16 @@ void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
                obj = NULL;
        }
 
+       return obj;
+}
+
+void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
+{
+       u8 *obj;
+       unsigned long flags;
+
+       read_lock_irqsave(&pool->pool_lock, flags);
+       obj = rxe_pool_get_index_locked(pool, index);
        read_unlock_irqrestore(&pool->pool_lock, flags);
 
        return obj;
@@ -438,7 +445,7 @@ void *rxe_pool_get_key_locked(struct rxe_pool *pool, void *key)
        struct rxe_type_info *info = &rxe_type_info[pool->type];
        struct rb_node *node;
        struct rxe_pool_entry *elem;
-       u8 *obj = NULL;
+       u8 *obj;
        int cmp;
 
        node = pool->key.tree.rb_node;
@@ -469,7 +476,7 @@ void *rxe_pool_get_key_locked(struct rxe_pool *pool, void *key)
 
 void *rxe_pool_get_key(struct rxe_pool *pool, void *key)
 {
-       u8 *obj = NULL;
+       u8 *obj;
        unsigned long flags;
 
        read_lock_irqsave(&pool->pool_lock, flags);