summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-06-17 23:47:53 +0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-11 07:40:27 +0400
commitdce34ce298d85b81630401f4feb4bd7ac77fe9c7 (patch)
tree9caa66cd3f03d500fdef5df290de23695589026d
parent2aefa104313996d1a9582476cee53d1296c834bf (diff)
downloadlinux-dce34ce298d85b81630401f4feb4bd7ac77fe9c7.tar.xz
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,
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 a94205476736..750708ccd708 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 */