aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-06-17 15:47:53 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-10 23:40:27 -0400
commitdce34ce298d85b81630401f4feb4bd7ac77fe9c7 (patch)
tree9caa66cd3f03d500fdef5df290de23695589026d
parent2aefa104313996d1a9582476cee53d1296c834bf (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.c2
-rw-r--r--include/linux/nfs_fs.h2
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 */