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) |
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 ad90cbe76703..68f6bf122006 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c | |||
@@ -425,6 +425,8 @@ int nfs_scan_list(struct nfs_inode *nfsi, | |||
425 | req->wb_index, tag); | 425 | req->wb_index, tag); |
426 | nfs_list_add_request(req, dst); | 426 | nfs_list_add_request(req, dst); |
427 | res++; | 427 | res++; |
428 | if (res == INT_MAX) | ||
429 | goto out; | ||
428 | } | 430 | } |
429 | } | 431 | } |
430 | 432 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index a94205476736..750708ccd708 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -158,7 +158,7 @@ struct nfs_inode { | |||
158 | spinlock_t req_lock; | 158 | spinlock_t req_lock; |
159 | struct radix_tree_root nfs_page_tree; | 159 | struct radix_tree_root nfs_page_tree; |
160 | 160 | ||
161 | unsigned int ncommit, | 161 | unsigned long ncommit, |
162 | npages; | 162 | npages; |
163 | 163 | ||
164 | /* Open contexts for shared mmap writes */ | 164 | /* Open contexts for shared mmap writes */ |