提交 36943fa4 编写于 作者: T Trond Myklebust

NLM: nlm_alloc_call should not immediately fail on signal

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: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 47831f35
...@@ -291,14 +291,15 @@ nlmclnt_alloc_call(void) ...@@ -291,14 +291,15 @@ nlmclnt_alloc_call(void)
{ {
struct nlm_rqst *call; struct nlm_rqst *call;
while (!signalled()) { for(;;) {
call = (struct nlm_rqst *) kmalloc(sizeof(struct nlm_rqst), GFP_KERNEL); call = kzalloc(sizeof(*call), GFP_KERNEL);
if (call) { if (call != NULL) {
memset(call, 0, sizeof(*call));
locks_init_lock(&call->a_args.lock.fl); locks_init_lock(&call->a_args.lock.fl);
locks_init_lock(&call->a_res.lock.fl); locks_init_lock(&call->a_res.lock.fl);
return call; return call;
} }
if (signalled())
break;
printk("nlmclnt_alloc_call: failed, waiting for memory\n"); printk("nlmclnt_alloc_call: failed, waiting for memory\n");
schedule_timeout_interruptible(5*HZ); schedule_timeout_interruptible(5*HZ);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册