Thread (3 messages) 3 messages, 2 authors, 2020-10-19

Re: [PATCH] block/elevator: reduce the critical section

From: Jens Axboe <axboe@kernel.dk>
Date: 2020-10-19 17:23:53
Also in: lkml

On 10/19/20 10:42 AM, Hui Su wrote:
quoted hunk ↗ jump to hunk
@@ -633,23 +633,21 @@ static struct elevator_type *elevator_get_default(struct request_queue *q)
  */
 static struct elevator_type *elevator_get_by_features(struct request_queue *q)
 {
-	struct elevator_type *e, *found = NULL;
+	struct elevator_type *e = NULL;
 
 	spin_lock(&elv_list_lock);
-
 	list_for_each_entry(e, &elv_list, list) {
 		if (elv_support_features(e->elevator_features,
 					 q->required_elevator_features)) {
-			found = e;
 			break;
 		}
 	}
+	spin_unlock(&elv_list_lock);
 
-	if (found && !try_module_get(found->elevator_owner))
-		found = NULL;
+	if (e && !try_module_get(e->elevator_owner))
+		e = NULL;
 
-	spin_unlock(&elv_list_lock);
-	return found;
+	return e;
 }
This looks wrong as well. If we don't match the elevator, then we just
return the last one. Or maybe even a totally invalid entry, depending on
how the list iteration works.


-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help