NLM: nlm_alloc_call should not immediately fail on signal
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 20 Mar 2006 18:44:05 +0000 (13:44 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 20 Mar 2006 18:44:05 +0000 (13:44 -0500)
Currently, nlm_alloc_call tests for a signal before it even tries to
allocate memory.
Fix it so that it tries at least once.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/lockd/clntproc.c

index 970b6a6..615a988 100644 (file)
@@ -291,14 +291,15 @@ nlmclnt_alloc_call(void)
 {
        struct nlm_rqst *call;
 
-       while (!signalled()) {
-               call = (struct nlm_rqst *) kmalloc(sizeof(struct nlm_rqst), GFP_KERNEL);
-               if (call) {
-                       memset(call, 0, sizeof(*call));
+       for(;;) {
+               call = kzalloc(sizeof(*call), GFP_KERNEL);
+               if (call != NULL) {
                        locks_init_lock(&call->a_args.lock.fl);
                        locks_init_lock(&call->a_res.lock.fl);
                        return call;
                }
+               if (signalled())
+                       break;
                printk("nlmclnt_alloc_call: failed, waiting for memory\n");
                schedule_timeout_interruptible(5*HZ);
        }