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
c28c107e24
commit
0726ab2d54
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);
|
grub_util_follow_gpart_up (name_tmp, &off, name_out);
|
||||||
free (name_tmp);
|
free (name_tmp);
|
||||||
LIST_FOREACH (config, &provider->lg_config, lg_config)
|
LIST_FOREACH (config, &provider->lg_config, lg_config)
|
||||||
if (strcasecmp (config->lg_name, "start") == 0)
|
if (strcasecmp (config->lg_name, "offset") == 0)
|
||||||
off += strtoull (config->lg_val, 0, 10);
|
off += strtoull (config->lg_val, 0, 10) / provider->lg_sectorsize;
|
||||||
if (off_out)
|
if (off_out)
|
||||||
*off_out = off;
|
*off_out = off;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue