net: Fix incorrect RPC packets on 64-bit systems
authorRalf Hubert <r.hubert@technisat.de>
Fri, 1 Jul 2016 11:19:51 +0000 (13:19 +0200)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 6 Jul 2016 15:45:07 +0000 (10:45 -0500)
This patch fixes incorrect RPC packet layout caused by
'long' type size difference on 64 and 32-bit architectures.

Signed-off-by: Ralf Hubert <r.hubert@technisat.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
net/nfs.c

index f60a0378187184e58cdc605e24d8ab4e044897a9..4a5a1ab2a918b91cef552d046d01715cdbebcca4 100644 (file)
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -132,7 +132,7 @@ static char *dirname(char *path)
 /**************************************************************************
 RPC_ADD_CREDENTIALS - Add RPC authentication/verifier entries
 **************************************************************************/
-static long *rpc_add_credentials(long *p)
+static uint32_t *rpc_add_credentials(uint32_t *p)
 {
        int hl;
        int hostnamelen;
@@ -241,7 +241,7 @@ static void nfs_mount_req(char *path)
        pathlen = strlen(path);
 
        p = &(data[0]);
-       p = (uint32_t *)rpc_add_credentials((long *)p);
+       p = rpc_add_credentials(p);
 
        *p++ = htonl(pathlen);
        if (pathlen & 3)
@@ -268,7 +268,7 @@ static void nfs_umountall_req(void)
                return;
 
        p = &(data[0]);
-       p = (uint32_t *)rpc_add_credentials((long *)p);
+       p = rpc_add_credentials(p);
 
        len = (uint32_t *)p - (uint32_t *)&(data[0]);
 
@@ -289,7 +289,7 @@ static void nfs_readlink_req(void)
        int len;
 
        p = &(data[0]);
-       p = (uint32_t *)rpc_add_credentials((long *)p);
+       p = rpc_add_credentials(p);
 
        memcpy(p, filefh, NFS_FHSIZE);
        p += (NFS_FHSIZE / 4);
@@ -312,7 +312,7 @@ static void nfs_lookup_req(char *fname)
        fnamelen = strlen(fname);
 
        p = &(data[0]);
-       p = (uint32_t *)rpc_add_credentials((long *)p);
+       p = rpc_add_credentials(p);
 
        memcpy(p, dirfh, NFS_FHSIZE);
        p += (NFS_FHSIZE / 4);
@@ -337,7 +337,7 @@ static void nfs_read_req(int offset, int readlen)
        int len;
 
        p = &(data[0]);
-       p = (uint32_t *)rpc_add_credentials((long *)p);
+       p = rpc_add_credentials(p);
 
        memcpy(p, filefh, NFS_FHSIZE);
        p += (NFS_FHSIZE / 4);