Merge branch 'drm-rockchip-next-fixes-2016-03-28' of https://github.com/markyzq/kerne...
[linux-2.6-block.git] / fs / nfsd / nfs4state.c
index d4b0b789ea2435cb53c4eb212ce52d425fdbff11..0462eeddfff9997f9de2fa0fb53a100deeff941d 100644 (file)
@@ -2587,21 +2587,26 @@ static __be32 check_forechannel_attrs(struct nfsd4_channel_attrs *ca, struct nfs
        return nfs_ok;
 }
 
+/*
+ * Server's NFSv4.1 backchannel support is AUTH_SYS-only for now.
+ * These are based on similar macros in linux/sunrpc/msg_prot.h .
+ */
+#define RPC_MAX_HEADER_WITH_AUTH_SYS \
+       (RPC_CALLHDRSIZE + 2 * (2 + UNX_CALLSLACK))
+
+#define RPC_MAX_REPHEADER_WITH_AUTH_SYS \
+       (RPC_REPHDRSIZE + (2 + NUL_REPLYSLACK))
+
 #define NFSD_CB_MAX_REQ_SZ     ((NFS4_enc_cb_recall_sz + \
-                                RPC_MAX_HEADER_WITH_AUTH) * sizeof(__be32))
+                                RPC_MAX_HEADER_WITH_AUTH_SYS) * sizeof(__be32))
 #define NFSD_CB_MAX_RESP_SZ    ((NFS4_dec_cb_recall_sz + \
-                                RPC_MAX_REPHEADER_WITH_AUTH) * sizeof(__be32))
+                                RPC_MAX_REPHEADER_WITH_AUTH_SYS) * \
+                                sizeof(__be32))
 
 static __be32 check_backchannel_attrs(struct nfsd4_channel_attrs *ca)
 {
        ca->headerpadsz = 0;
 
-       /*
-        * These RPC_MAX_HEADER macros are overkill, especially since we
-        * don't even do gss on the backchannel yet.  But this is still
-        * less than 1k.  Tighten up this estimate in the unlikely event
-        * it turns out to be a problem for some client:
-        */
        if (ca->maxreq_sz < NFSD_CB_MAX_REQ_SZ)
                return nfserr_toosmall;
        if (ca->maxresp_sz < NFSD_CB_MAX_RESP_SZ)