[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:
Patrick Caulfield 2006-11-06 08:53:28 +00:00 committed by Steven Whitehouse
parent ba542e3b92
commit e2de7f5655
1 changed files with 5 additions and 0 deletions

View File

@ -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;
} }