diff options
Diffstat (limited to 'net/sunrpc/sched.c')
| -rw-r--r-- | net/sunrpc/sched.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 994cfea2bad..83a4c43cee7 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c @@ -812,7 +812,10 @@ static void rpc_async_schedule(struct work_struct *work)  void *rpc_malloc(struct rpc_task *task, size_t size)  {  	struct rpc_buffer *buf; -	gfp_t gfp = RPC_IS_SWAPPER(task) ? GFP_ATOMIC : GFP_NOWAIT; +	gfp_t gfp = GFP_NOWAIT; + +	if (RPC_IS_SWAPPER(task)) +		gfp |= __GFP_MEMALLOC;  	size += sizeof(struct rpc_buffer);  	if (size <= RPC_BUFFER_MAXSIZE) @@ -886,7 +889,7 @@ static void rpc_init_task(struct rpc_task *task, const struct rpc_task_setup *ta  static struct rpc_task *  rpc_alloc_task(void)  { -	return (struct rpc_task *)mempool_alloc(rpc_task_mempool, GFP_NOFS); +	return (struct rpc_task *)mempool_alloc(rpc_task_mempool, GFP_NOIO);  }  /*  |