]> git.baikalelectronics.ru Git - kernel.git/commitdiff
SUNRPC: Trim stack utilization in the wrap and unwrap paths
authorChuck Lever <chuck.lever@oracle.com>
Wed, 11 Mar 2020 15:21:17 +0000 (11:21 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 16 Mar 2020 14:18:45 +0000 (10:18 -0400)
By preventing compiler inlining of the integrity and privacy
helpers, stack utilization for the common case (authentication only)
goes way down.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/auth_gss/auth_gss.c

index 98b2c8bc8f40490ca88de7e18257d4db89222d52..45707a306f205f9d115c3173dba9288bec20ac53 100644 (file)
@@ -1724,8 +1724,9 @@ bad_mic:
        goto out;
 }
 
-static int gss_wrap_req_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
-                             struct rpc_task *task, struct xdr_stream *xdr)
+static noinline_for_stack int
+gss_wrap_req_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
+                  struct rpc_task *task, struct xdr_stream *xdr)
 {
        struct rpc_rqst *rqstp = task->tk_rqstp;
        struct xdr_buf integ_buf, *snd_buf = &rqstp->rq_snd_buf;
@@ -1816,8 +1817,9 @@ out:
        return -EAGAIN;
 }
 
-static int gss_wrap_req_priv(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
-                            struct rpc_task *task, struct xdr_stream *xdr)
+static noinline_for_stack int
+gss_wrap_req_priv(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
+                 struct rpc_task *task, struct xdr_stream *xdr)
 {
        struct rpc_rqst *rqstp = task->tk_rqstp;
        struct xdr_buf  *snd_buf = &rqstp->rq_snd_buf;
@@ -1947,7 +1949,7 @@ gss_unwrap_resp_auth(struct rpc_cred *cred)
  *             proc_req_arg_t arg;
  *     };
  */
-static int
+static noinline_for_stack int
 gss_unwrap_resp_integ(struct rpc_task *task, struct rpc_cred *cred,
                      struct gss_cl_ctx *ctx, struct rpc_rqst *rqstp,
                      struct xdr_stream *xdr)
@@ -2021,7 +2023,7 @@ bad_mic:
        goto out;
 }
 
-static int
+static noinline_for_stack int
 gss_unwrap_resp_priv(struct rpc_task *task, struct rpc_cred *cred,
                     struct gss_cl_ctx *ctx, struct rpc_rqst *rqstp,
                     struct xdr_stream *xdr)