osdep/freebsd: Fix partition calculation for EBR entries
For EBR partitions, "start" is the relative starting sector of the EBR header itself, whereas "offset" is the relative starting byte of the partition's contents, excluding the EBR header and any padding. Thus we must use "offset", and divide by the sector size to convert to sectors. Fixes Debian bug #923253. Signed-off-by: James Clarke <jrtc27@jrtc27.com> Reviewed-by: Colin Watson <cjwatson@ubuntu.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
686db96646
commit
222cb8f6df
1 changed files with 2 additions and 2 deletions
|
@ -338,8 +338,8 @@ grub_util_follow_gpart_up (const char *name, grub_disk_addr_t *off_out, char **n
|
|||
grub_util_follow_gpart_up (name_tmp, &off, name_out);
|
||||
free (name_tmp);
|
||||
LIST_FOREACH (config, &provider->lg_config, lg_config)
|
||||
if (strcasecmp (config->lg_name, "start") == 0)
|
||||
off += strtoull (config->lg_val, 0, 10);
|
||||
if (strcasecmp (config->lg_name, "offset") == 0)
|
||||
off += strtoull (config->lg_val, 0, 10) / provider->lg_sectorsize;
|
||||
if (off_out)
|
||||
*off_out = off;
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue