diff options
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index c47b4d7bafa..34ccf815ea8 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -40,6 +40,7 @@   * at the end of nfs4svc_decode_compoundargs.   */ +#include <linux/slab.h>  #include <linux/namei.h>  #include <linux/statfs.h>  #include <linux/utsname.h> @@ -160,10 +161,10 @@ static __be32 *read_buf(struct nfsd4_compoundargs *argp, u32 nbytes)  	argp->p = page_address(argp->pagelist[0]);  	argp->pagelist++;  	if (argp->pagelen < PAGE_SIZE) { -		argp->end = p + (argp->pagelen>>2); +		argp->end = argp->p + (argp->pagelen>>2);  		argp->pagelen = 0;  	} else { -		argp->end = p + (PAGE_SIZE>>2); +		argp->end = argp->p + (PAGE_SIZE>>2);  		argp->pagelen -= PAGE_SIZE;  	}  	memcpy(((char*)p)+avail, argp->p, (nbytes - avail)); @@ -1425,10 +1426,10 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)  			argp->p = page_address(argp->pagelist[0]);  			argp->pagelist++;  			if (argp->pagelen < PAGE_SIZE) { -				argp->end = p + (argp->pagelen>>2); +				argp->end = argp->p + (argp->pagelen>>2);  				argp->pagelen = 0;  			} else { -				argp->end = p + (PAGE_SIZE>>2); +				argp->end = argp->p + (PAGE_SIZE>>2);  				argp->pagelen -= PAGE_SIZE;  			}  		}  |