All of lore.kernel.org
 help / color / mirror / Atom feed
From: Randy Dunlap <randy.dunlap@oracle.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	ext4 development <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH] ext2: skip pages past number of blocks in ext2_find_entry
Date: Thu, 21 Dec 2006 11:05:49 -0800	[thread overview]
Message-ID: <20061221110549.bf336c02.randy.dunlap@oracle.com> (raw)
In-Reply-To: <458AD954.7020904@redhat.com>

On Thu, 21 Dec 2006 12:58:28 -0600 Eric Sandeen wrote:

> This one was pointed out on the MOKB site:
> http://kernelfun.blogspot.com/2006/11/mokb-09-11-2006-linux-26x-ext2checkpage.html
> 
> If a directory's i_size is corrupted, ext2_find_entry() will keep processing
> pages until the i_size is reached, even if there are no more blocks associated
> with the directory inode.  This patch puts in some minimal sanity-checking
> so that we don't keep checking pages (and issuing errors) if we know there
> can be no more data to read, based on the block count of the directory inode.
> 
> This is somewhat similar in approach to the ext3 patch I sent earlier this
> year.
> 
> Thanks,
> 
> -Eric
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> 
> Index: linux-2.6.19/fs/ext2/dir.c
> ===================================================================
> --- linux-2.6.19.orig/fs/ext2/dir.c
> +++ linux-2.6.19/fs/ext2/dir.c
> @@ -368,6 +368,14 @@ struct ext2_dir_entry_2 * ext2_find_entr
>  		}
>  		if (++n >= npages)
>  			n = 0;
> +		/* next page is past the blocks we've got */
> +		if (unlikely(n > (dir->i_blocks >> (PAGE_CACHE_SHIFT - 9)))) {
> +			ext2_error(dir->i_sb, __FUNCTION__,
> +				"dir %lu size %lld exceeds block count %llu",
> +				dir->i_ino, dir->i_size,
> +				(unsigned long long)dir->i_blocks);
> +				goto out;

Please don't hide the goto; un-indent 1 tab stop.

> +		}
>  	} while (n != start);
>  out:
>  	return NULL;


---
~Randy

  reply	other threads:[~2006-12-21 19:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-21 18:58 [PATCH] ext2: skip pages past number of blocks in ext2_find_entry Eric Sandeen
2006-12-21 19:05 ` Randy Dunlap [this message]
2006-12-21 19:11   ` Eric Sandeen
2006-12-21 19:14     ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061221110549.bf336c02.randy.dunlap@oracle.com \
    --to=randy.dunlap@oracle.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sandeen@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.