# Re: \[PATCH v6 2/5\] partitions/efi: Support non-standard GPT location

- From: Dmitry Osipenko \<digetx@gmail.com\>
- Date: 2021-08-21 17:26:36 
- List: linux-efi
- Page: https://ratatoskr.run/linux-efi/2021/08/6404911
- Thread: https://ratatoskr.run/linux-tegra/2021/08/6404839/t.md

```text
21.08.2021 01:45, Michał Mirosław пишет:
> On Thu, Aug 19, 2021 at 01:19:17AM +0300, Dmitry Osipenko wrote:
>> Support looking up GPT at a non-standard location specified by a block
>> device driver.
>>
>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>> ---
>>  block/partitions/efi.c | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/block/partitions/efi.c b/block/partitions/efi.c
>> index aaa3dc487cb5..7ca5c4c374d4 100644
>> --- a/block/partitions/efi.c
>> +++ b/block/partitions/efi.c
>> @@ -585,6 +585,8 @@ static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt,
>>  	gpt_header *pgpt = NULL, *agpt = NULL;
>>  	gpt_entry *pptes = NULL, *aptes = NULL;
>>  	legacy_mbr *legacymbr;
>> +	struct gendisk *disk = state->disk;
>> +	const struct block_device_operations *fops = disk->fops;
>>  	sector_t total_sectors = get_capacity(state->disk);
>>  	u64 lastlba;
>>  
>> @@ -619,6 +621,16 @@ static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt,
>>          if (!good_agpt && force_gpt)
>>                  good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes);
>>  
>> +	if (!good_agpt && force_gpt && fops->alternative_gpt_sector) {
>> +		sector_t agpt_sector;
>> +		int err;
>> +
>> +		err = fops->alternative_gpt_sector(disk, &agpt_sector);
>> +		if (!err)
>> +			good_agpt = is_gpt_valid(state, agpt_sector,
>> +						 &agpt, &aptes);
>> +	}
>> +
> 
> When alternative_gpt_sector is provided I would expect it to override
> the default, not be a fallback for it. But if someone tries to put
> a broken (decoy, garbage) GPT at a standard place, current ordering
> will prevent overriding it.

This will break devices that have GPT at standard location. If someone
tries to manipulate with GPT entries, then it's a problem of that someone.
```
