lkml.org 
[lkml]   [2017]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 093/115] bcache: explicitly destroy mutex while exiting
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Liang Chen <liangchen.linux@gmail.com>


    [ Upstream commit 330a4db89d39a6b43f36da16824eaa7a7509d34d ]

    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: Liang Chen <liangchen.linux@gmail.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Reviewed-by: Coly Li <colyli@suse.de>
    Reviewed-by: Eric Wheeler <bcache@linux.ewheeler.net>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/md/bcache/super.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    --- a/drivers/md/bcache/super.c
    +++ b/drivers/md/bcache/super.c
    @@ -2083,6 +2083,7 @@ static void bcache_exit(void)
    if (bcache_major)
    unregister_blkdev(bcache_major, "bcache");
    unregister_reboot_notifier(&reboot);
    + mutex_destroy(&bch_register_lock);
    }

    static int __init bcache_init(void)
    @@ -2101,14 +2102,15 @@ static int __init bcache_init(void)
    bcache_major = register_blkdev(0, "bcache");
    if (bcache_major < 0) {
    unregister_reboot_notifier(&reboot);
    + mutex_destroy(&bch_register_lock);
    return bcache_major;
    }

    if (!(bcache_wq = create_workqueue("bcache")) ||
    !(bcache_kobj = kobject_create_and_add("bcache", fs_kobj)) ||
    - sysfs_create_files(bcache_kobj, files) ||
    bch_request_init() ||
    - bch_debug_init(bcache_kobj))
    + bch_debug_init(bcache_kobj) ||
    + sysfs_create_files(bcache_kobj, files))
    goto err;

    return 0;

    \
     
     \ /
      Last update: 2017-12-18 18:49    [W:3.993 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site