hfsplus: fix oops on mount with corrupted btree extent records
authorJeff Mahoney <jeffm@suse.com>
Thu, 14 Oct 2010 13:53:37 +0000 (09:53 -0400)
committerChristoph Hellwig <hch@lst.de>
Thu, 14 Oct 2010 13:53:37 +0000 (09:53 -0400)
commitee52716245877b821f5ddbb3ace85b73084fb450
tree3d85d8fce3bde7b1601878074cdec622705d1af2
parent40de9a7cebc4e0b23cd6863c84c2279f0ccadebb
hfsplus: fix oops on mount with corrupted btree extent records

A particular fsfuzzer run caused an hfs file system to crash on mount. This
is due to a corrupted MDB extent record causing a miscalculation of
HFSPLUS_I(inode)->first_blocks for the extent tree. If the extent records
are zereod out, then it won't trigger the first_blocks special case and
instead falls through to the extent code, which we're in the middle
of initializing.

This patch catches the 0 size extent records, reports the corruption,
and fails the mount.

[hch: ported of commit 47f365eb575735c6b2edf5d08e0d16d26a9c23bd from hfs]

Reported-by: Ramon de Carvalho Valle <rcvalle@linux.vnet.ibm.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Christoph Hellwig <hch@tuxera.com>
fs/hfsplus/btree.c