Эх сурвалжийг харах

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>
Parav Pandit 7 жил өмнө
parent
commit
f7b65d9bf2

+ 4 - 5
drivers/infiniband/core/device.c

@@ -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) {
+	list_for_each_entry(context, &device->client_data_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;