mirror of https://gitee.com/openkylin/linux.git
RDMA/core: Use simplified list_for_each
While traversing client_data_list in following conditions, linked list is only read, no elements of the list are removed. Therefore, use list_for_each_entry(), instead of list_for_each_safe(). 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>
This commit is contained in:
parent
93688ddbe1
commit
f7b65d9bf2
drivers/infiniband/core
|
@ -587,13 +587,12 @@ void ib_unregister_device(struct ib_device *device)
|
||||||
down_write(&lists_rwsem);
|
down_write(&lists_rwsem);
|
||||||
list_del(&device->core_list);
|
list_del(&device->core_list);
|
||||||
spin_lock_irqsave(&device->client_data_lock, flags);
|
spin_lock_irqsave(&device->client_data_lock, flags);
|
||||||
list_for_each_entry_safe(context, tmp, &device->client_data_list, list)
|
list_for_each_entry(context, &device->client_data_list, list)
|
||||||
context->going_down = true;
|
context->going_down = true;
|
||||||
spin_unlock_irqrestore(&device->client_data_lock, flags);
|
spin_unlock_irqrestore(&device->client_data_lock, flags);
|
||||||
downgrade_write(&lists_rwsem);
|
downgrade_write(&lists_rwsem);
|
||||||
|
|
||||||
list_for_each_entry_safe(context, tmp, &device->client_data_list,
|
list_for_each_entry(context, &device->client_data_list, list) {
|
||||||
list) {
|
|
||||||
if (context->client->remove)
|
if (context->client->remove)
|
||||||
context->client->remove(device, context->data);
|
context->client->remove(device, context->data);
|
||||||
}
|
}
|
||||||
|
@ -663,7 +662,7 @@ EXPORT_SYMBOL(ib_register_client);
|
||||||
*/
|
*/
|
||||||
void ib_unregister_client(struct ib_client *client)
|
void ib_unregister_client(struct ib_client *client)
|
||||||
{
|
{
|
||||||
struct ib_client_data *context, *tmp;
|
struct ib_client_data *context;
|
||||||
struct ib_device *device;
|
struct ib_device *device;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
@ -678,7 +677,7 @@ void ib_unregister_client(struct ib_client *client)
|
||||||
|
|
||||||
down_write(&lists_rwsem);
|
down_write(&lists_rwsem);
|
||||||
spin_lock_irqsave(&device->client_data_lock, flags);
|
spin_lock_irqsave(&device->client_data_lock, flags);
|
||||||
list_for_each_entry_safe(context, tmp, &device->client_data_list, list)
|
list_for_each_entry(context, &device->client_data_list, list)
|
||||||
if (context->client == client) {
|
if (context->client == client) {
|
||||||
context->going_down = true;
|
context->going_down = true;
|
||||||
found_context = context;
|
found_context = context;
|
||||||
|
|
Loading…
Reference in New Issue