writeback: fix bad _bh spinlock nesting
authorJens Axboe <jaxboe@fusionio.com>
Wed, 4 Aug 2010 11:34:31 +0000 (13:34 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 7 Aug 2010 16:53:57 +0000 (18:53 +0200)
Fix a bug where a lock is _bh nested within another _bh lock,
but forgets to use the _bh variant for unlock.

Further more, it's not necessary to test _bh locks, the inner lock
can just use spin_lock(). So fix up the bug by making that change.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
mm/backing-dev.c

index 0b8ee66..08d3575 100644 (file)
@@ -415,7 +415,8 @@ static int bdi_forker_thread(void *ptr)
                                break;
                        }
 
-                       spin_lock_bh(&bdi->wb_lock);
+                       spin_lock(&bdi->wb_lock);
+
                        /*
                         * If there is no work to do and the bdi thread was
                         * inactive long enough - kill it. The wb_lock is taken
@@ -432,7 +433,7 @@ static int bdi_forker_thread(void *ptr)
                                action = KILL_THREAD;
                                break;
                        }
-                       spin_unlock_bh(&bdi->wb_lock);
+                       spin_unlock(&bdi->wb_lock);
                }
                spin_unlock_bh(&bdi_lock);