diff options
Diffstat (limited to 'net/sunrpc/sched.c')
-rw-r--r-- | net/sunrpc/sched.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index fa53a88b2c5b..c03e7bf6e9bc 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
@@ -885,16 +885,20 @@ static void rpc_free_task(struct rcu_head *rcu) | |||
885 | */ | 885 | */ |
886 | struct rpc_task *rpc_new_task(const struct rpc_task_setup *setup_data) | 886 | struct rpc_task *rpc_new_task(const struct rpc_task_setup *setup_data) |
887 | { | 887 | { |
888 | struct rpc_task *task; | 888 | struct rpc_task *task = setup_data->task; |
889 | 889 | unsigned short flags = 0; | |
890 | task = rpc_alloc_task(); | 890 | |
891 | if (!task) | 891 | if (task == NULL) { |
892 | goto out; | 892 | task = rpc_alloc_task(); |
893 | if (task == NULL) | ||
894 | goto out; | ||
895 | flags = RPC_TASK_DYNAMIC; | ||
896 | } | ||
893 | 897 | ||
894 | rpc_init_task(task, setup_data); | 898 | rpc_init_task(task, setup_data); |
895 | 899 | ||
900 | task->tk_flags |= flags; | ||
896 | dprintk("RPC: allocated task %p\n", task); | 901 | dprintk("RPC: allocated task %p\n", task); |
897 | task->tk_flags |= RPC_TASK_DYNAMIC; | ||
898 | out: | 902 | out: |
899 | return task; | 903 | return task; |
900 | } | 904 | } |