From: Eric Sesterhenn Date: Sun, 19 Oct 2008 03:28:02 +0000 (-0700) Subject: hfsplus: fix possible deadlock when handling corrupted extents X-Git-Tag: v2.6.28-rc1~155 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=248736c2a57206388c86f8cdd3392ee986e84f9f;p=platform%2Fkernel%2Flinux-3.10.git hfsplus: fix possible deadlock when handling corrupted extents A corrupted extent for the extent file itself may try to get an impossible extent, causing a deadlock if I see it correctly. Check the inode number after the first_blocks checks and fail if it's the extent file, as according to the spec the extent file should have no extent for itself. Signed-off-by: Eric Sesterhenn Cc: Roman Zippel Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c index fec8f61..0022eec 100644 --- a/fs/hfsplus/extents.c +++ b/fs/hfsplus/extents.c @@ -199,6 +199,9 @@ int hfsplus_get_block(struct inode *inode, sector_t iblock, goto done; } + if (inode->i_ino == HFSPLUS_EXT_CNID) + return -EIO; + mutex_lock(&HFSPLUS_I(inode).extents_lock); res = hfsplus_ext_read_extent(inode, ablock); if (!res) {