]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - block/as-iosched.c
as-iosched: fix double locking bug in as_merged_requests()
[linux-2.6-omap-h63xx.git] / block / as-iosched.c
index b201d16a71020f1261a42bc56ac36a9915da16ad..96036846a0017505691060d62734afc0dcad9529 100644 (file)
@@ -1275,9 +1275,13 @@ static void as_merged_requests(struct request_queue *q, struct request *req,
                         * Don't copy here but swap, because when anext is
                         * removed below, it must contain the unused context
                         */
-                       double_spin_lock(&rioc->lock, &nioc->lock, rioc < nioc);
-                       swap_io_context(&rioc, &nioc);
-                       double_spin_unlock(&rioc->lock, &nioc->lock, rioc < nioc);
+                       if (rioc != nioc) {
+                               double_spin_lock(&rioc->lock, &nioc->lock,
+                                                               rioc < nioc);
+                               swap_io_context(&rioc, &nioc);
+                               double_spin_unlock(&rioc->lock, &nioc->lock,
+                                                               rioc < nioc);
+                       }
                }
        }