diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index 5356b120dbf8e2fe61ba88081d1fab1941f135a9..849ca413522c415104971e7bcf1dea36a951b0b5 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -825,9 +825,11 @@ static void __rpc_execute(struct rpc_task *task)
  */
 void rpc_execute(struct rpc_task *task)
 {
+	bool is_async = RPC_IS_ASYNC(task);
+
 	rpc_set_active(task);
 	rpc_make_runnable(task);
-	if (!RPC_IS_ASYNC(task))
+	if (!is_async)
 		__rpc_execute(task);
 }