diff options
author | Andreas Gruenbacher <agruen@suse.de> | 2005-06-22 13:16:28 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2005-06-22 16:07:27 -0400 |
commit | 213484254c65e3c39c59df454132748b1367f816 (patch) | |
tree | bba8225be09a04f23a34ee0e93b9fa1090f3bf8f /fs | |
parent | 458818ed76d3f495f9f32373c936456c9427f759 (diff) |
[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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs3xdr.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfssvc.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c index a4437fb177f0..db4a904810a4 100644 --- a/fs/nfs/nfs3xdr.c +++ b/fs/nfs/nfs3xdr.c | |||
@@ -677,7 +677,7 @@ nfs3_xdr_setaclargs(struct rpc_rqst *req, u32 *p, | |||
677 | /* put as much of the acls into head as possible. */ | 677 | /* put as much of the acls into head as possible. */ |
678 | len_in_head = min_t(unsigned int, buf->head->iov_len - base, len); | 678 | len_in_head = min_t(unsigned int, buf->head->iov_len - base, len); |
679 | len -= len_in_head; | 679 | len -= len_in_head; |
680 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + len_in_head); | 680 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + (len_in_head >> 2)); |
681 | 681 | ||
682 | for (count = 0; (count << PAGE_SHIFT) < len; count++) { | 682 | for (count = 0; (count << PAGE_SHIFT) < len; count++) { |
683 | args->pages[count] = alloc_page(GFP_KERNEL); | 683 | args->pages[count] = alloc_page(GFP_KERNEL); |
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 79b25b19fec8..904df604e86b 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c | |||
@@ -376,6 +376,7 @@ static struct svc_program nfsd_acl_program = { | |||
376 | .pg_nvers = NFSD_ACL_NRVERS, | 376 | .pg_nvers = NFSD_ACL_NRVERS, |
377 | .pg_vers = nfsd_acl_version, | 377 | .pg_vers = nfsd_acl_version, |
378 | .pg_name = "nfsd", | 378 | .pg_name = "nfsd", |
379 | .pg_class = "nfsd", | ||
379 | .pg_stats = &nfsd_acl_svcstats, | 380 | .pg_stats = &nfsd_acl_svcstats, |
380 | }; | 381 | }; |
381 | 382 | ||