diff options
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index d6ef0955a979..aa87954b4af2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
@@ -1072,8 +1072,9 @@ nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename | |||
1072 | 1072 | ||
1073 | READ_BUF(4); | 1073 | READ_BUF(4); |
1074 | rename->rn_snamelen = be32_to_cpup(p++); | 1074 | rename->rn_snamelen = be32_to_cpup(p++); |
1075 | READ_BUF(rename->rn_snamelen + 4); | 1075 | READ_BUF(rename->rn_snamelen); |
1076 | SAVEMEM(rename->rn_sname, rename->rn_snamelen); | 1076 | SAVEMEM(rename->rn_sname, rename->rn_snamelen); |
1077 | READ_BUF(4); | ||
1077 | rename->rn_tnamelen = be32_to_cpup(p++); | 1078 | rename->rn_tnamelen = be32_to_cpup(p++); |
1078 | READ_BUF(rename->rn_tnamelen); | 1079 | READ_BUF(rename->rn_tnamelen); |
1079 | SAVEMEM(rename->rn_tname, rename->rn_tnamelen); | 1080 | SAVEMEM(rename->rn_tname, rename->rn_tnamelen); |
@@ -1155,13 +1156,14 @@ nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclient | |||
1155 | READ_BUF(8); | 1156 | READ_BUF(8); |
1156 | setclientid->se_callback_prog = be32_to_cpup(p++); | 1157 | setclientid->se_callback_prog = be32_to_cpup(p++); |
1157 | setclientid->se_callback_netid_len = be32_to_cpup(p++); | 1158 | setclientid->se_callback_netid_len = be32_to_cpup(p++); |
1158 | 1159 | READ_BUF(setclientid->se_callback_netid_len); | |
1159 | READ_BUF(setclientid->se_callback_netid_len + 4); | ||
1160 | SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len); | 1160 | SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len); |
1161 | READ_BUF(4); | ||
1161 | setclientid->se_callback_addr_len = be32_to_cpup(p++); | 1162 | setclientid->se_callback_addr_len = be32_to_cpup(p++); |
1162 | 1163 | ||
1163 | READ_BUF(setclientid->se_callback_addr_len + 4); | 1164 | READ_BUF(setclientid->se_callback_addr_len); |
1164 | SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len); | 1165 | SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len); |
1166 | READ_BUF(4); | ||
1165 | setclientid->se_callback_ident = be32_to_cpup(p++); | 1167 | setclientid->se_callback_ident = be32_to_cpup(p++); |
1166 | 1168 | ||
1167 | DECODE_TAIL; | 1169 | DECODE_TAIL; |
@@ -1835,8 +1837,9 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) | |||
1835 | 1837 | ||
1836 | READ_BUF(4); | 1838 | READ_BUF(4); |
1837 | argp->taglen = be32_to_cpup(p++); | 1839 | argp->taglen = be32_to_cpup(p++); |
1838 | READ_BUF(argp->taglen + 8); | 1840 | READ_BUF(argp->taglen); |
1839 | SAVEMEM(argp->tag, argp->taglen); | 1841 | SAVEMEM(argp->tag, argp->taglen); |
1842 | READ_BUF(8); | ||
1840 | argp->minorversion = be32_to_cpup(p++); | 1843 | argp->minorversion = be32_to_cpup(p++); |
1841 | argp->opcnt = be32_to_cpup(p++); | 1844 | argp->opcnt = be32_to_cpup(p++); |
1842 | max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2); | 1845 | max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2); |
@@ -3060,7 +3063,7 @@ static __be32 nfsd4_encode_bind_conn_to_session(struct nfsd4_compoundres *resp, | |||
3060 | p = xdr_encode_opaque_fixed(p, bcts->sessionid.data, | 3063 | p = xdr_encode_opaque_fixed(p, bcts->sessionid.data, |
3061 | NFS4_MAX_SESSIONID_LEN); | 3064 | NFS4_MAX_SESSIONID_LEN); |
3062 | *p++ = cpu_to_be32(bcts->dir); | 3065 | *p++ = cpu_to_be32(bcts->dir); |
3063 | /* Sorry, we do not yet support RDMA over 4.1: */ | 3066 | /* Upshifting from TCP to RDMA is not supported */ |
3064 | *p++ = cpu_to_be32(0); | 3067 | *p++ = cpu_to_be32(0); |
3065 | } | 3068 | } |
3066 | return nfserr; | 3069 | return nfserr; |