diff options
Diffstat (limited to 'fs/lockd/svcproc.c')
-rw-r--r-- | fs/lockd/svcproc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c index 88379cc6e0b1..76019d2ff72d 100644 --- a/fs/lockd/svcproc.c +++ b/fs/lockd/svcproc.c | |||
@@ -87,8 +87,7 @@ nlmsvc_retrieve_args(struct svc_rqst *rqstp, struct nlm_args *argp, | |||
87 | return 0; | 87 | return 0; |
88 | 88 | ||
89 | no_locks: | 89 | no_locks: |
90 | if (host) | 90 | nlm_release_host(host); |
91 | nlm_release_host(host); | ||
92 | if (error) | 91 | if (error) |
93 | return error; | 92 | return error; |
94 | return nlm_lck_denied_nolocks; | 93 | return nlm_lck_denied_nolocks; |
@@ -129,7 +128,7 @@ nlmsvc_proc_test(struct svc_rqst *rqstp, struct nlm_args *argp, | |||
129 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; | 128 | return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; |
130 | 129 | ||
131 | /* Now check for conflicting locks */ | 130 | /* Now check for conflicting locks */ |
132 | resp->status = cast_status(nlmsvc_testlock(rqstp, file, &argp->lock, &resp->lock, &resp->cookie)); | 131 | resp->status = cast_status(nlmsvc_testlock(rqstp, file, host, &argp->lock, &resp->lock, &resp->cookie)); |
133 | if (resp->status == nlm_drop_reply) | 132 | if (resp->status == nlm_drop_reply) |
134 | rc = rpc_drop_reply; | 133 | rc = rpc_drop_reply; |
135 | else | 134 | else |
@@ -176,7 +175,7 @@ nlmsvc_proc_lock(struct svc_rqst *rqstp, struct nlm_args *argp, | |||
176 | #endif | 175 | #endif |
177 | 176 | ||
178 | /* Now try to lock the file */ | 177 | /* Now try to lock the file */ |
179 | resp->status = cast_status(nlmsvc_lock(rqstp, file, &argp->lock, | 178 | resp->status = cast_status(nlmsvc_lock(rqstp, file, host, &argp->lock, |
180 | argp->block, &argp->cookie)); | 179 | argp->block, &argp->cookie)); |
181 | if (resp->status == nlm_drop_reply) | 180 | if (resp->status == nlm_drop_reply) |
182 | rc = rpc_drop_reply; | 181 | rc = rpc_drop_reply; |
@@ -278,7 +277,9 @@ static void nlmsvc_callback_exit(struct rpc_task *task, void *data) | |||
278 | 277 | ||
279 | static void nlmsvc_callback_release(void *data) | 278 | static void nlmsvc_callback_release(void *data) |
280 | { | 279 | { |
280 | lock_kernel(); | ||
281 | nlm_release_call(data); | 281 | nlm_release_call(data); |
282 | unlock_kernel(); | ||
282 | } | 283 | } |
283 | 284 | ||
284 | static const struct rpc_call_ops nlmsvc_callback_ops = { | 285 | static const struct rpc_call_ops nlmsvc_callback_ops = { |