diff options
author | J. Bruce Fields <bfields@redhat.com> | 2014-05-12 18:10:58 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-05-30 17:32:17 -0400 |
commit | a5cddc885b99458df963a75abbe0b40cbef56c48 (patch) | |
tree | b7f200949823f98207aa2d2fd72c112fa3e6ee8e /fs/nfsd/nfs4xdr.c | |
parent | d05d5744ef67879877dbe2e3d0fb9fcc27ee44e5 (diff) |
nfsd4: better reservation of head space for krb5
RPC_MAX_AUTH_SIZE is scattered around several places. Better to set it
once in the auth code, where this kind of estimate should be made. And
while we're at it we can leave it zero when we're not using krb5i or
krb5p.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 3e347a1caec4..470fe8998c9b 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
@@ -1611,7 +1611,8 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) | |||
1611 | DECODE_HEAD; | 1611 | DECODE_HEAD; |
1612 | struct nfsd4_op *op; | 1612 | struct nfsd4_op *op; |
1613 | bool cachethis = false; | 1613 | bool cachethis = false; |
1614 | int max_reply = 2 * RPC_MAX_AUTH_SIZE + 8; /* opcnt, status */ | 1614 | int auth_slack= argp->rqstp->rq_auth_slack; |
1615 | int max_reply = auth_slack + 8; /* opcnt, status */ | ||
1615 | int readcount = 0; | 1616 | int readcount = 0; |
1616 | int readbytes = 0; | 1617 | int readbytes = 0; |
1617 | int i; | 1618 | int i; |
@@ -1677,7 +1678,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) | |||
1677 | svc_reserve(argp->rqstp, max_reply + readbytes); | 1678 | svc_reserve(argp->rqstp, max_reply + readbytes); |
1678 | argp->rqstp->rq_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE; | 1679 | argp->rqstp->rq_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE; |
1679 | 1680 | ||
1680 | if (readcount > 1 || max_reply > PAGE_SIZE - 2*RPC_MAX_AUTH_SIZE) | 1681 | if (readcount > 1 || max_reply > PAGE_SIZE - auth_slack) |
1681 | argp->rqstp->rq_splice_ok = false; | 1682 | argp->rqstp->rq_splice_ok = false; |
1682 | 1683 | ||
1683 | DECODE_TAIL; | 1684 | DECODE_TAIL; |