summaryrefslogtreecommitdiff
path: root/drivers/md/bcache/super.c
diff options
context:
space:
mode:
authorSlava Pestov <sp@daterainc.com>2014-04-30 02:39:27 +0400
committerKent Overstreet <kmo@daterainc.com>2014-08-05 02:23:03 +0400
commite5112201c1285841f8b565ece5d6ae7e0d7947a2 (patch)
tree6468d44f5424918ab138a7b9de00be259873ae3e /drivers/md/bcache/super.c
parent8b326d3a2a76912dfed2f0ab937d59fae9512ca2 (diff)
downloadlinux-e5112201c1285841f8b565ece5d6ae7e0d7947a2.tar.xz
bcache: fix lockdep warnings on shutdown
Diffstat (limited to 'drivers/md/bcache/super.c')
-rw-r--r--drivers/md/bcache/super.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index 1ea9fa27ee3c..09573c2bcb5d 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -1214,7 +1214,9 @@ void bch_flash_dev_release(struct kobject *kobj)
static void flash_dev_free(struct closure *cl)
{
struct bcache_device *d = container_of(cl, struct bcache_device, cl);
+ mutex_lock(&bch_register_lock);
bcache_device_free(d);
+ mutex_unlock(&bch_register_lock);
kobject_put(&d->kobj);
}
@@ -1222,7 +1224,9 @@ static void flash_dev_flush(struct closure *cl)
{
struct bcache_device *d = container_of(cl, struct bcache_device, cl);
+ mutex_lock(&bch_register_lock);
bcache_device_unlink(d);
+ mutex_unlock(&bch_register_lock);
kobject_del(&d->kobj);
continue_at(cl, flash_dev_free, system_wq);
}