The first usable logical block can be used by a GUID partition entry, and therefore cannot be used by the header.
Signed-off-by: Davidlohr Bueso <d...@gnu.org> --- block/partitions/efi.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/block/partitions/efi.c b/block/partitions/efi.c index 7795bb4..abf33a2 100644 --- a/block/partitions/efi.c +++ b/block/partitions/efi.c @@ -363,6 +363,13 @@ static int is_gpt_valid(struct parsed_partitions *state, u64 lba, goto fail; } + /* The header must be outside usable range */ + if (le64_to_cpu((*gpt)->first_usable_lba) < lba && + le64_to_cpu((*gpt)->last_usable_lba) > lba) { + pr_debug("GPT: Header is inside usable area\n"); + goto fail; + } + /* Check that sizeof_partition_entry has the correct value */ if (le32_to_cpu((*gpt)->sizeof_partition_entry) != sizeof(gpt_entry)) { pr_debug("GUID Partitition Entry Size check failed.\n"); -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/