aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Axboe <jaxboe@fusionio.com>2010-08-04 07:34:31 -0400
committerJens Axboe <jaxboe@fusionio.com>2010-08-07 12:53:57 -0400
commit6bf05d03ea8d00bb53e0642f94a5a6815be2edb6 (patch)
treed36ea43efb9306fa4ff2fdb8f579fb661cad61e8
parente7f52dfb4f378ea1bbfd4476f4e8ba42f5fb332c (diff)
writeback: fix bad _bh spinlock nesting
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>
-rw-r--r--mm/backing-dev.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 0b8ee66993dd..08d357522e78 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -415,7 +415,8 @@ static int bdi_forker_thread(void *ptr)
415 break; 415 break;
416 } 416 }
417 417
418 spin_lock_bh(&bdi->wb_lock); 418 spin_lock(&bdi->wb_lock);
419
419 /* 420 /*
420 * If there is no work to do and the bdi thread was 421 * If there is no work to do and the bdi thread was
421 * inactive long enough - kill it. The wb_lock is taken 422 * inactive long enough - kill it. The wb_lock is taken
@@ -432,7 +433,7 @@ static int bdi_forker_thread(void *ptr)
432 action = KILL_THREAD; 433 action = KILL_THREAD;
433 break; 434 break;
434 } 435 }
435 spin_unlock_bh(&bdi->wb_lock); 436 spin_unlock(&bdi->wb_lock);
436 } 437 }
437 spin_unlock_bh(&bdi_lock); 438 spin_unlock_bh(&bdi_lock);
438 439