* [PATCH] hfs: fix oops on mount with corrupted btree extent records
@ 2009-10-13 0:41 Jeff Mahoney
2009-10-13 4:12 ` Valdis.Kletnieks
0 siblings, 1 reply; 3+ messages in thread
From: Jeff Mahoney @ 2009-10-13 0:41 UTC (permalink / raw)
To: Linux Kernel Mailing List, Roman Zippel andr, Andrew Morton
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>
---
fs/hfs/btree.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/fs/hfs/btree.c
+++ b/fs/hfs/btree.c
@@ -58,6 +58,11 @@ struct hfs_btree *hfs_btree_open(struct
}
unlock_new_inode(tree->inode);
+ if (!HFS_I(tree->inode)->first_blocks) {
+ printk(KERN_ERR "hfs: invalid btree extent records (0 size).\n");
+ goto free_inode;
+ }
+
mapping = tree->inode->i_mapping;
page = read_mapping_page(mapping, 0, NULL);
if (IS_ERR(page))
--
Jeff Mahoney
SUSE Labs
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] hfs: fix oops on mount with corrupted btree extent records
2009-10-13 0:41 [PATCH] hfs: fix oops on mount with corrupted btree extent records Jeff Mahoney
@ 2009-10-13 4:12 ` Valdis.Kletnieks
2009-10-13 14:13 ` Jeff Mahoney
0 siblings, 1 reply; 3+ messages in thread
From: Valdis.Kletnieks @ 2009-10-13 4:12 UTC (permalink / raw)
To: Jeff Mahoney; +Cc: Linux Kernel Mailing List, Roman Zippel andr, Andrew Morton
[-- Attachment #1: Type: text/plain, Size: 781 bytes --]
On Mon, 12 Oct 2009 20:41:37 EDT, Jeff Mahoney said:
> 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.
Just for completeness - does the current fsck.hfs already know how to fix it, or
at least heave stuff over the side so the filesystem is self-consistent again?
Or will a user who hits this need a new fsck.hfs to get it back to mountable?
[-- Attachment #2: Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] hfs: fix oops on mount with corrupted btree extent records
2009-10-13 4:12 ` Valdis.Kletnieks
@ 2009-10-13 14:13 ` Jeff Mahoney
0 siblings, 0 replies; 3+ messages in thread
From: Jeff Mahoney @ 2009-10-13 14:13 UTC (permalink / raw)
To: Valdis.Kletnieks
Cc: Linux Kernel Mailing List, Roman Zippel andr, Andrew Morton
On 10/13/2009 12:12 AM, Valdis.Kletnieks@vt.edu wrote:
> On Mon, 12 Oct 2009 20:41:37 EDT, Jeff Mahoney said:
>> 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.
>
> Just for completeness - does the current fsck.hfs already know how to fix it, or
> at least heave stuff over the side so the filesystem is self-consistent again?
> Or will a user who hits this need a new fsck.hfs to get it back to mountable?
Sorry, I don't actually know. We don't ship a fsck.hfs so I haven't
tested it.
-Jeff
--
Jeff Mahoney
SUSE Labs
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-10-13 14:13 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-13 0:41 [PATCH] hfs: fix oops on mount with corrupted btree extent records Jeff Mahoney
2009-10-13 4:12 ` Valdis.Kletnieks
2009-10-13 14:13 ` Jeff Mahoney
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.