nbd: use list_for_each_entry_safe to make it more consolidated and readable
Denis Cheng [Wed, 17 Oct 2007 06:26:14 +0000 (23:26 -0700)]
Thus the traverse of the loop may delete nodes, use the safe version.

Signed-off-by: Denis Cheng <crquan@gmail.com>
Cc: Paul Clements <paul.clements@steeleye.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/block/nbd.c

index be5ec3a..d7a4215 100644 (file)
@@ -233,8 +233,7 @@ error_out:
 
 static struct request *nbd_find_request(struct nbd_device *lo, char *handle)
 {
-       struct request *req;
-       struct list_head *tmp;
+       struct request *req, *tmp;
        struct request *xreq;
        int err;
 
@@ -245,8 +244,7 @@ static struct request *nbd_find_request(struct nbd_device *lo, char *handle)
                goto out;
 
        spin_lock(&lo->queue_lock);
-       list_for_each(tmp, &lo->queue_head) {
-               req = list_entry(tmp, struct request, queuelist);
+       list_for_each_entry_safe(req, tmp, &lo->queue_head, queuelist) {
                if (req != xreq)
                        continue;
                list_del_init(&req->queuelist);