RDMA/core: No need to protect kfree with spin lock and semaphore
authorParav Pandit <parav@mellanox.com>
Tue, 28 Aug 2018 12:08:41 +0000 (15:08 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 6 Sep 2018 19:45:38 +0000 (13:45 -0600)
While unregistering a client, only context removal should be protected
with lock. There is no need to protect a freeing of such context which is
already removed from the list.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/device.c

index 6d8ac51a39cc05600e6ea97b50ed62b13319e778..9bc5ba2f488ebbe896e300ca6de31411509ca39b 100644 (file)
@@ -700,9 +700,9 @@ void ib_unregister_client(struct ib_client *client)
                down_write(&lists_rwsem);
                spin_lock_irqsave(&device->client_data_lock, flags);
                list_del(&found_context->list);
-               kfree(found_context);
                spin_unlock_irqrestore(&device->client_data_lock, flags);
                up_write(&lists_rwsem);
+               kfree(found_context);
        }
 
        mutex_unlock(&device_mutex);