Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/block/loop.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff -puN drivers/block/loop.c~optimise-loop-driver-a-bit-tidy drivers/block/loop.c
--- 25/drivers/block/loop.c~optimise-loop-driver-a-bit-tidy	2005-04-26 22:06:07.236326208 -0700
+++ 25-akpm/drivers/block/loop.c	2005-04-26 22:06:41.645095280 -0700
@@ -594,19 +594,18 @@ static int loop_thread(void *data)
 			continue;
 
 		spin_lock_irq(&lo->lo_lock);
-		pending = lo->lo_pending;
 
 		/*
 		 * could be upped because of tear-down, not pending work
 		 */
-		if (unlikely(!pending)) {
+		if (unlikely(!lo->lo_pending)) {
 			spin_unlock_irq(&lo->lo_lock);
 			break;
 		}
 
 		bio = loop_get_bio(lo);
-		pending--;
-		lo->lo_pending = pending;
+		lo->lo_pending--;
+		pending = lo->lo_pending;
 		spin_unlock_irq(&lo->lo_lock);
 
 		BUG_ON(!bio);
_