IB/core: Shifting initialization of device->cache_lock
authorAnand Khoje <anand.a.khoje@oracle.com>
Mon, 12 Jul 2021 12:26:24 +0000 (17:56 +0530)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 16 Jul 2021 13:57:28 +0000 (10:57 -0300)
The lock cache_lock of struct ib_device is initialized in function
ib_cache_setup_one(). This is much later than the device initialization in
_ib_alloc_device().

This change shifts initialization of cache_lock in _ib_alloc_device().

Link: https://lore.kernel.org/r/20210712122625.1147-3-anand.a.khoje@oracle.com
Suggested-by: Haakon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Anand Khoje <anand.a.khoje@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/cache.c
drivers/infiniband/core/device.c

index 929399e..0c98dd3 100644 (file)
@@ -1621,8 +1621,6 @@ int ib_cache_setup_one(struct ib_device *device)
        u32 p;
        int err;
 
-       rwlock_init(&device->cache_lock);
-
        err = gid_table_setup_one(device);
        if (err)
                return err;
index fa20b18..ba0ad72 100644 (file)
@@ -607,6 +607,8 @@ struct ib_device *_ib_alloc_device(size_t size)
        for (i = 0; i < ARRAY_SIZE(device->cq_pools); i++)
                INIT_LIST_HEAD(&device->cq_pools[i]);
 
+       rwlock_init(&device->cache_lock);
+
        device->uverbs_cmd_mask =
                BIT_ULL(IB_USER_VERBS_CMD_ALLOC_MW) |
                BIT_ULL(IB_USER_VERBS_CMD_ALLOC_PD) |