All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] hfsplus: fix overflow in hfsplus_get_block
@ 2011-02-15 13:14 Christoph Hellwig
  2011-02-15 13:14 ` [PATCH 2/3] hfsplus: fix overflow in hfsplus_read_wrapper Christoph Hellwig
  2011-02-15 13:14 ` [PATCH 2/3] hfsplus: lift the 2TB size limit Christoph Hellwig
  0 siblings, 2 replies; 3+ messages in thread
From: Christoph Hellwig @ 2011-02-15 13:14 UTC (permalink / raw)
  To: linux-fsdevel

For filesystems larger than 2TB the final sector number passed to
map_bh might overflow the range representable in a 32-bit data type.
Make sure we use a sector_t for it and the arithmetics calculating it.

Signed-off-by: Christoph Hellwig <hch@tuxera.com>

Index: linux-2.6/fs/hfsplus/extents.c
===================================================================
--- linux-2.6.orig/fs/hfsplus/extents.c	2011-02-15 13:42:05.456421843 +0100
+++ linux-2.6/fs/hfsplus/extents.c	2011-02-15 13:42:41.667422001 +0100
@@ -209,6 +209,7 @@ int hfsplus_get_block(struct inode *inod
 	struct hfsplus_inode_info *hip = HFSPLUS_I(inode);
 	int res = -EIO;
 	u32 ablock, dblock, mask;
+	sector_t sector;
 	int was_dirty = 0;
 	int shift;
 
@@ -255,10 +256,12 @@ int hfsplus_get_block(struct inode *inod
 done:
 	dprint(DBG_EXTENT, "get_block(%lu): %llu - %u\n",
 		inode->i_ino, (long long)iblock, dblock);
+
 	mask = (1 << sbi->fs_shift) - 1;
-	map_bh(bh_result, sb,
-		(dblock << sbi->fs_shift) + sbi->blockoffset +
-			(iblock & mask));
+	sector = ((sector_t)dblock << sbi->fs_shift) +
+		  sbi->blockoffset + (iblock & mask);
+	map_bh(bh_result, sb, sector);
+
 	if (create) {
 		set_buffer_new(bh_result);
 		hip->phys_size += sb->s_blocksize;

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-02-15 13:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-15 13:14 [PATCH 1/3] hfsplus: fix overflow in hfsplus_get_block Christoph Hellwig
2011-02-15 13:14 ` [PATCH 2/3] hfsplus: fix overflow in hfsplus_read_wrapper Christoph Hellwig
2011-02-15 13:14 ` [PATCH 2/3] hfsplus: lift the 2TB size limit Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.