public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* hfsplus corrupts filesystems >2TB
@ 2009-10-07  2:51 Ben Hutchings
  2009-10-11  2:11 ` [PATCH] hfsplus: Refuse to mount volumes larger than 2TB Ben Hutchings
  0 siblings, 1 reply; 4+ messages in thread
From: Ben Hutchings @ 2009-10-07  2:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Eric Sesterhenn, Roman Zippel

[-- Attachment #1: Type: text/plain, Size: 933 bytes --]

A Debian bug report <http://bugs.debian.org/550010> alerted me to the
fact that hfsplus is not using enough bits for some sector calculations.

hfsplus_get_block() does:

	u32 ablock, dblock, mask;
...
	map_bh(bh_result, sb, (dblock << HFSPLUS_SB(sb).fs_shift) + HFSPLUS_SB(sb).blockoffset + (iblock & mask));

which results in overflow when the sector number is >2^32.  Now it might
be sufficient to change the last line to:

	map_bh(bh_result, sb, ((sector_t)dblock << HFSPLUS_SB(sb).fs_shift) + HFSPLUS_SB(sb).blockoffset + (iblock & mask));

but there may be many other places where u32 must be changed to
sector_t.

For Debian's stable release, I'm intending to prevent mounting volumes
larger than 2^32 sectors (2TB).  Is anyone interested in fixing this
properly or should I submit the same change for mainline?

Ben.

-- 
Ben Hutchings
To err is human; to really foul things up requires a computer.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

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

end of thread, other threads:[~2009-10-11 17:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-07  2:51 hfsplus corrupts filesystems >2TB Ben Hutchings
2009-10-11  2:11 ` [PATCH] hfsplus: Refuse to mount volumes larger than 2TB Ben Hutchings
2009-10-11  7:51   ` Andrew Morton
2009-10-11 17:01     ` Ben Hutchings

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox