Browse Source

[PATCH] fix nfsacl pointer arithmetic and pg_class initialization bugs

* Pointer arithmetic bug: p is in word units. This fixes a memory
  corruption with big acls.
* Initialize pg_class to prevent a NULL pointer access.

 Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
 Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Andreas Gruenbacher 20 years ago
parent
commit
213484254c
2 changed files with 2 additions and 1 deletions
  1. 1 1
      fs/nfs/nfs3xdr.c
  2. 1 0
      fs/nfsd/nfssvc.c

+ 1 - 1
fs/nfs/nfs3xdr.c

@@ -677,7 +677,7 @@ nfs3_xdr_setaclargs(struct rpc_rqst *req, u32 *p,
 	/* put as much of the acls into head as possible. */
 	len_in_head = min_t(unsigned int, buf->head->iov_len - base, len);
 	len -= len_in_head;
-	req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + len_in_head);
+	req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + (len_in_head >> 2));
 
 	for (count = 0; (count << PAGE_SHIFT) < len; count++) {
 		args->pages[count] = alloc_page(GFP_KERNEL);

+ 1 - 0
fs/nfsd/nfssvc.c

@@ -376,6 +376,7 @@ static struct svc_program	nfsd_acl_program = {
 	.pg_nvers		= NFSD_ACL_NRVERS,
 	.pg_vers		= nfsd_acl_version,
 	.pg_name		= "nfsd",
+	.pg_class		= "nfsd",
 	.pg_stats		= &nfsd_acl_svcstats,
 };