aboutsummaryrefslogtreecommitdiffstats
path: root/fs/lockd
diff options
context:
space:
mode:
Diffstat (limited to 'fs/lockd')
-rw-r--r--fs/lockd/clntproc.c3
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
238void nlm_release_call(struct nlm_rqst *call) 239void 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);