Re: [PATCH] make kernel ignore bogus partitions

From: Andrew Morton
Date: Thu May 11 2006 - 12:33:17 EST


"Mike Miller (OS Dev)" <mikem@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Tue, May 09, 2006 at 12:41:38PM -0700, Andrew Morton wrote:
> > "Mike Miller (OS Dev)" <mikem@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > Patch 1/1
> > > Sometimes partitions claim to be larger than the reported capacity of a
> > > disk device. This patch makes the kernel ignore those partitions.
> > >
> > > Signed-off-by: Mike Miller <mike.miller@xxxxxx>
> > > Signed-off-by: Stephen Cameron <steve.cameron@xxxxxx>
> > >
> > > Please consider this for inclusion.
> > >
> > >
> > > fs/partitions/check.c | 5 +++++
> > > 1 files changed, 5 insertions(+)
> > >
> > > --- linux-2.6.14/fs/partitions/check.c~partition_vs_capacity 2006-01-06 09:32:14.000000000 -0600
> > > +++ linux-2.6.14-root/fs/partitions/check.c 2006-01-06 11:24:50.000000000 -0600
> > > @@ -382,6 +382,11 @@ int rescan_partitions(struct gendisk *di
> > > sector_t from = state->parts[p].from;
> > > if (!size)
> > > continue;
> > > + if (from+size-1 > get_capacity(disk)) {
> > > + printk(" %s: p%d exceeds device capacity, ignoring.\n",
> > > + disk->disk_name, p);
> > > + continue;
> > > + }
> > > add_partition(disk, p, from, size);
> > > #ifdef CONFIG_BLK_DEV_MD
> > > if (state->parts[p].flags)
> >
> > Shouldn't that be
> >
> > if (from+size > get_capacity(disk)) {
> >
> > ?
> >
> Since the partition size is 0-based this is correct:
>
> if (from+size-1 > get_capacity(disk)) {
>

Don't think so.

If `from' is 0 and `size' is 1025 and get_capacity() is 1024 then we have

if (1024 > 1024)

which returns false.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/