|
@@ -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)
|