[PATCH 5/6] 2.4.19-rc1 rpc_call_sync() stack reduction patch

From: Badari Pulavarty
Date: Mon Jan 10 2005 - 13:18:42 EST



Signed-off-by: Badari Pulavarty <pbadari@xxxxxxxxxx>
--- linux-2.4.29-rc1.org/net/sunrpc/clnt.c 2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.29-rc1/net/sunrpc/clnt.c 2005-01-09 23:08:31.000000000 -0800
@@ -238,7 +238,7 @@ void rpc_clnt_sigunmask(struct rpc_clnt
*/
int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
{
- struct rpc_task my_task, *task = &my_task;
+ struct rpc_task *task;
sigset_t oldset;
int status;

@@ -253,8 +253,11 @@ int rpc_call_sync(struct rpc_clnt *clnt,

rpc_clnt_sigmask(clnt, &oldset);

- /* Create/initialize a new RPC task */
- rpc_init_task(task, clnt, NULL, flags);
+ status = -ENOMEM;
+ task = rpc_new_task(clnt, NULL, flags);
+ if (task == NULL)
+ goto out;
+
rpc_call_setup(task, msg, 0);

/* Set up the call info struct and execute the task */
@@ -265,6 +268,7 @@ int rpc_call_sync(struct rpc_clnt *clnt,
rpc_release_task(task);
}

+out:
rpc_clnt_sigunmask(clnt, &oldset);

return status;