Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cc38bac3a0093b3b7928efc6ff8e9faf9e75f41d
Commit:     cc38bac3a0093b3b7928efc6ff8e9faf9e75f41d
Parent:     0fb2b7e945f55a8317e5f58db7c068aab5b825a1
Author:     Chuck Lever <[EMAIL PROTECTED]>
AuthorDate: Mon Dec 10 14:56:54 2007 -0500
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 02:05:51 2008 -0500

    NFS: Ensure NFSv4 SETCLIENTID send buffer is large enough
    
    Ensure that the RPC buffer size specified for NFSv4 SETCLIENTID procedures
    matches what we are encoding into the buffer.  See the definition of
    struct nfs4_setclientid {} and the encode_setclientid() function.
    
    Signed-off-by: Chuck Lever <[EMAIL PROTECTED]>
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 fs/nfs/nfs4xdr.c        |   10 ++++++----
 include/linux/nfs_xdr.h |   13 +++++++------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index eae46f0..db1ed9c 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -116,10 +116,12 @@ static int nfs4_stat_to_errno(int);
 #define decode_renew_maxsz     (op_decode_hdr_maxsz)
 #define encode_setclientid_maxsz \
                                (op_encode_hdr_maxsz + \
-                               4 /*server->ip_addr*/ + \
-                               1 /*Netid*/ + \
-                               6 /*uaddr*/ + \
-                               6 + (NFS4_VERIFIER_SIZE >> 2))
+                               XDR_QUADLEN(NFS4_VERIFIER_SIZE) + \
+                               XDR_QUADLEN(NFS4_SETCLIENTID_NAMELEN) + \
+                               1 /* sc_prog */ + \
+                               XDR_QUADLEN(RPCBIND_MAXNETIDLEN) + \
+                               XDR_QUADLEN(RPCBIND_MAXUADDRLEN) + \
+                               1) /* sc_cb_ident */
 #define decode_setclientid_maxsz \
                                (op_decode_hdr_maxsz + \
                                2 + \
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 6b213a6..d8e395d 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -666,16 +666,17 @@ struct nfs4_rename_res {
        struct nfs_fattr *              new_fattr;
 };
 
+#define NFS4_SETCLIENTID_NAMELEN       (48)
 struct nfs4_setclientid {
-       const nfs4_verifier *           sc_verifier;      /* request */
+       const nfs4_verifier *           sc_verifier;
        unsigned int                    sc_name_len;
-       char                            sc_name[48];      /* request */
-       u32                             sc_prog;          /* request */
+       char                            sc_name[NFS4_SETCLIENTID_NAMELEN];
+       u32                             sc_prog;
        unsigned int                    sc_netid_len;
-       char                            sc_netid[4];      /* request */
+       char                            sc_netid[RPCBIND_MAXNETIDLEN];
        unsigned int                    sc_uaddr_len;
-       char                            sc_uaddr[24];     /* request */
-       u32                             sc_cb_ident;      /* request */
+       char                            sc_uaddr[RPCBIND_MAXUADDRLEN];
+       u32                             sc_cb_ident;
 };
 
 struct nfs4_statfs_arg {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to