diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/lockd/clntproc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c index 4e1c0123b45d..749eb5328cb0 100644 --- a/fs/lockd/clntproc.c +++ b/fs/lockd/clntproc.c | |||
@@ -221,6 +221,7 @@ struct nlm_rqst *nlm_alloc_call(struct nlm_host *host) | |||
221 | for(;;) { | 221 | for(;;) { |
222 | call = kzalloc(sizeof(*call), GFP_KERNEL); | 222 | call = kzalloc(sizeof(*call), GFP_KERNEL); |
223 | if (call != NULL) { | 223 | if (call != NULL) { |
224 | atomic_set(&call->a_count, 1); | ||
224 | locks_init_lock(&call->a_args.lock.fl); | 225 | locks_init_lock(&call->a_args.lock.fl); |
225 | locks_init_lock(&call->a_res.lock.fl); | 226 | locks_init_lock(&call->a_res.lock.fl); |
226 | call->a_host = host; | 227 | call->a_host = host; |
@@ -237,6 +238,8 @@ struct nlm_rqst *nlm_alloc_call(struct nlm_host *host) | |||
237 | 238 | ||
238 | void nlm_release_call(struct nlm_rqst *call) | 239 | void nlm_release_call(struct nlm_rqst *call) |
239 | { | 240 | { |
241 | if (!atomic_dec_and_test(&call->a_count)) | ||
242 | return; | ||
240 | nlm_release_host(call->a_host); | 243 | nlm_release_host(call->a_host); |
241 | nlmclnt_release_lockargs(call); | 244 | nlmclnt_release_lockargs(call); |
242 | kfree(call); | 245 | kfree(call); |