NFS: SETCLIENTID XDR buffer sizes are incorrect
authorChuck Lever <chuck.lever@oracle.com>
Sun, 9 Nov 2014 01:15:18 +0000 (20:15 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 25 Nov 2014 21:22:16 +0000 (16:22 -0500)
commit6dd3436b9dc0df4b9ae7bb4e0076996a5ffda219
treeb01d1040b665452f8036cee5dc45bccf09fbc04b
parentedef1297f33a4546559d905457b435a5ea160bab
NFS: SETCLIENTID XDR buffer sizes are incorrect

Use the correct calculation of the maximum size of a clientaddr4
when encoding and decoding SETCLIENTID operations. clientaddr4 is
defined in section 2.2.10 of RFC3530bis-31.

The usage in encode_setclientid_maxsz is missing the 4-byte length
in both strings, but is otherwise correct. decode_setclientid_maxsz
simply asks for a page of receive buffer space, which is
unnecessarily large (more than 4KB).

Note that a SETCLIENTID reply is either clientid+verifier, or
clientaddr4, depending on the returned NFS status. It doesn't
hurt to allocate enough space for both.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs4xdr.c