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>
 
 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;
 
                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);