[pnfs] [PATCH 3/4] [SQUASHME] pnfs: prevent offset overflow in _pnfs_do_flush

Benny Halevy bhalevy.lists at gmail.com
Wed May 14 13:39:02 EDT 2008


wb_index needs to be typecasted to u64 or loff_t before shifting left
with PAGE_CACHE_SHIFT to prevent overflow on 32-bit architectures
since pgoff_t is unsigned long.

Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
 fs/nfs/pnfs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index f731b82..d76076c 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1649,7 +1649,7 @@ int _pnfs_do_flush(struct inode *inode, struct nfs_page *req,
 {
 	struct nfs_server *nfss = NFS_SERVER(inode);
 	struct pnfs_layout_segment *lseg;
-	loff_t pos = (req->wb_index << PAGE_CACHE_SHIFT) + req->wb_offset;
+	loff_t pos = ((loff_t)req->wb_index << PAGE_CACHE_SHIFT) + req->wb_offset;
 	int status = 0;
 
 	lseg = pnfs_find_get_lseg(inode, pos, req->wb_bytes, IOMODE_RW);
-- 
1.5.3.3



More information about the pNFS mailing list