diff -Nur linux-2.6.15/fs/partitions/check.c linux-2.6.15-check/fs/partitions/check.c --- linux-2.6.15/fs/partitions/check.c 2006-01-03 04:21:10.000000000 +0100 +++ linux-2.6.15-check/fs/partitions/check.c 2006-02-08 21:20:03.000000000 +0100 @@ -175,8 +175,19 @@ memset(&state->parts, 0, sizeof(state->parts)); res = check_part[i++](state, bdev); } - if (res > 0) + if (res > 0) { + sector_t from, cap; + for(i = 1; i < state->limit; i++) { + from = state->parts[i].from; + cap = get_capacity(hd); + if(state->parts[i].size + from > cap) { + printk(KERN_WARNING " %s: partition %s%d beyond device capacity\n", + hd->disk_name, hd->disk_name, i); + state->parts[i].size = cap - (from < cap ? from : cap); + } + } return state; + } if (!res) printk(" unknown partition table\n"); else if (warn_no_part)