mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
md-cluster: fix potential lock issue in add_new_disk
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>
This commit is contained in:
parent
08332893e3
commit
2dffdc0724
@ -1311,8 +1311,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, 1);
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user