From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Copeland Subject: [PATCH 3/4] omfs: refuse to mount if bitmap pointer is obviously wrong Date: Wed, 14 Jul 2010 23:26:20 -0400 Message-ID: <1279164381-9247-4-git-send-email-me@bobcopeland.com> References: <1279164381-9247-1-git-send-email-me@bobcopeland.com> Cc: linux-kernel@vger.kernel.org, Bob Copeland To: linux-fsdevel@vger.kernel.org Return-path: In-Reply-To: <1279164381-9247-1-git-send-email-me@bobcopeland.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org If the free space bitmap pointer is corrupted such that it lies outside of the number of blocks in the filesystem, print a message and fail the mount so the user can fix it offline. Signed-off-by: Bob Copeland --- fs/omfs/inode.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/fs/omfs/inode.c b/fs/omfs/inode.c index bd4bf75..0af5d0a 100644 --- a/fs/omfs/inode.c +++ b/fs/omfs/inode.c @@ -509,6 +509,15 @@ static int omfs_fill_super(struct super_block *sb, void *data, int silent) goto out_brelse_bh2; } + if (sbi->s_bitmap_ino != ~0ULL && + sbi->s_bitmap_ino > sbi->s_num_blocks) { + printk(KERN_ERR "omfs: free space bitmap location is corrupt " + "(%llx, total blocks %llx)\n", + (unsigned long long) sbi->s_bitmap_ino, + (unsigned long long) sbi->s_num_blocks); + goto out_brelse_bh2; + } + ret = omfs_get_imap(sb); if (ret) goto out_brelse_bh2; -- 1.5.6.5