lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.4 059/167] md-cluster: fix potential lock issue in add_new_disk
    Date
    From: Guoqing Jiang <gqjiang@suse.com>

    [ Upstream commit 2dffdc0724004f38f5e39907747b53e4b0d80e59 ]

    The add_new_disk returns with communication locked if
    __sendmsg returns failure, fix it with call unlock_comm
    before return.

    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    CC: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/md/md-cluster.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c
    index 494d01d0e92a..a7a561af05c9 100644
    --- a/drivers/md/md-cluster.c
    +++ b/drivers/md/md-cluster.c
    @@ -945,8 +945,10 @@ static int add_new_disk(struct mddev *mddev, struct md_rdev *rdev)
    cmsg.raid_slot = cpu_to_le32(rdev->desc_nr);
    lock_comm(cinfo);
    ret = __sendmsg(cinfo, &cmsg);
    - if (ret)
    + if (ret) {
    + unlock_comm(cinfo);
    return ret;
    + }
    cinfo->no_new_dev_lockres->flags |= DLM_LKF_NOQUEUE;
    ret = dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_EX);
    cinfo->no_new_dev_lockres->flags &= ~DLM_LKF_NOQUEUE;
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 18:19    [W:4.104 / U:0.440 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site