Commit f7b65d9b authored by Parav Pandit's avatar Parav Pandit Committed by Jason Gunthorpe

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: default avatarParav Pandit <parav@mellanox.com>
Reviewed-by: default avatarDaniel Jurgens <danielj@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 93688ddb
...@@ -587,13 +587,12 @@ void ib_unregister_device(struct ib_device *device) ...@@ -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); ...@@ -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) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment