[DLM] fix oops in kref_put when removing a lockspace
Now that the lockspace struct is freed when the last sysfs object is released this patch prevents use of that lockspace by sysfs. We attempt to re-get the lockspace from the lockspace list and fail the request if it has been removed. Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
ba542e3b92
commit
e2de7f5655
|
@ -43,6 +43,10 @@ static ssize_t dlm_control_store(struct dlm_ls *ls, const char *buf, size_t len)
|
||||||
ssize_t ret = len;
|
ssize_t ret = len;
|
||||||
int n = simple_strtol(buf, NULL, 0);
|
int n = simple_strtol(buf, NULL, 0);
|
||||||
|
|
||||||
|
ls = dlm_find_lockspace_local(ls->ls_local_handle);
|
||||||
|
if (!ls)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
switch (n) {
|
switch (n) {
|
||||||
case 0:
|
case 0:
|
||||||
dlm_ls_stop(ls);
|
dlm_ls_stop(ls);
|
||||||
|
@ -53,6 +57,7 @@ static ssize_t dlm_control_store(struct dlm_ls *ls, const char *buf, size_t len)
|
||||||
default:
|
default:
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
}
|
}
|
||||||
|
dlm_put_lockspace(ls);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue