Commit 71a67bb7 authored by Liang Chen's avatar Liang Chen Committed by Kleber Sacilotto de Souza

bcache: explicitly destroy mutex while exiting

BugLink: http://bugs.launchpad.net/bugs/1745052

[ Upstream commit 330a4db8 ]

mutex_destroy does nothing most of time, but it's better to call
it to make the code future proof and it also has some meaning
for like mutex debug.

As Coly pointed out in a previous review, bcache_exit() may not be
able to handle all the references properly if userspace registers
cache and backing devices right before bch_debug_init runs and
bch_debug_init failes later. So not exposing userspace interface
until everything is ready to avoid that issue.
Signed-off-by: default avatarLiang Chen <liangchen.linux@gmail.com>
Reviewed-by: default avatarMichael Lyle <mlyle@lyle.org>
Reviewed-by: default avatarColy Li <colyli@suse.de>
Reviewed-by: default avatarEric Wheeler <bcache@linux.ewheeler.net>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
parent 9ea3fa42
...@@ -2116,6 +2116,7 @@ static void bcache_exit(void) ...@@ -2116,6 +2116,7 @@ static void bcache_exit(void)
if (bcache_major) if (bcache_major)
unregister_blkdev(bcache_major, "bcache"); unregister_blkdev(bcache_major, "bcache");
unregister_reboot_notifier(&reboot); unregister_reboot_notifier(&reboot);
mutex_destroy(&bch_register_lock);
} }
static int __init bcache_init(void) static int __init bcache_init(void)
...@@ -2134,14 +2135,15 @@ static int __init bcache_init(void) ...@@ -2134,14 +2135,15 @@ static int __init bcache_init(void)
bcache_major = register_blkdev(0, "bcache"); bcache_major = register_blkdev(0, "bcache");
if (bcache_major < 0) { if (bcache_major < 0) {
unregister_reboot_notifier(&reboot); unregister_reboot_notifier(&reboot);
mutex_destroy(&bch_register_lock);
return bcache_major; return bcache_major;
} }
if (!(bcache_wq = create_workqueue("bcache")) || if (!(bcache_wq = create_workqueue("bcache")) ||
!(bcache_kobj = kobject_create_and_add("bcache", fs_kobj)) || !(bcache_kobj = kobject_create_and_add("bcache", fs_kobj)) ||
sysfs_create_files(bcache_kobj, files) ||
bch_request_init() || bch_request_init() ||
bch_debug_init(bcache_kobj)) bch_debug_init(bcache_kobj) ||
sysfs_create_files(bcache_kobj, files))
goto err; goto err;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment