diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-06-17 15:47:53 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-07-10 23:40:27 -0400 |
commit | dce34ce298d85b81630401f4feb4bd7ac77fe9c7 (patch) | |
tree | 9caa66cd3f03d500fdef5df290de23695589026d | |
parent | 2aefa104313996d1a9582476cee53d1296c834bf (diff) | |
download | op-kernel-dev-dce34ce298d85b81630401f4feb4bd7ac77fe9c7.zip op-kernel-dev-dce34ce298d85b81630401f4feb4bd7ac77fe9c7.tar.gz |
NFS: Prevent integer overflow in nfs_scan_list()
Also ensure that nfs_inode ncommit and npages are large enough to represent
all possible values for the number of pages.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/nfs/pagelist.c | 2 | ||||
-rw-r--r-- | include/linux/nfs_fs.h | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index ad90cbe..68f6bf1 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c @@ -425,6 +425,8 @@ int nfs_scan_list(struct nfs_inode *nfsi, req->wb_index, tag); nfs_list_add_request(req, dst); res++; + if (res == INT_MAX) + goto out; } } diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index a942054..750708c 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -158,7 +158,7 @@ struct nfs_inode { spinlock_t req_lock; struct radix_tree_root nfs_page_tree; - unsigned int ncommit, + unsigned long ncommit, npages; /* Open contexts for shared mmap writes */ |