diff options
author | Jens Axboe <jaxboe@fusionio.com> | 2010-08-04 07:34:31 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 12:53:57 -0400 |
commit | 6bf05d03ea8d00bb53e0642f94a5a6815be2edb6 (patch) | |
tree | d36ea43efb9306fa4ff2fdb8f579fb661cad61e8 | |
parent | e7f52dfb4f378ea1bbfd4476f4e8ba42f5fb332c (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.c | 5 |
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 | ||