]> git.baikalelectronics.ru Git - kernel.git/commit
hfs: fix oops on mount with corrupted btree extent records
authorJeff Mahoney <jeffm@suse.com>
Mon, 26 Oct 2009 23:49:56 +0000 (16:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Oct 2009 14:39:29 +0000 (07:39 -0700)
commit7c0848c87438180790e617b4fbb664b79e7cfce9
tree3a6cbb4a7e6bbb9365c8092541a04d3ea1f77ce6
parentd7842c2a4e1c1d06fcb883428d828fe0dd1fdf0c
hfs: 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
HFS_I(inode)->first_blocks for the extent tree.  If the extent records are
zereod out, it won't trigger the first_blocks special case.  Instead it
falls through to the extent code which we're still in the middle of
initializing.

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

Reported-by: Ramon de Carvalho Valle <rcvalle@linux.vnet.ibm.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/hfs/btree.c