39 lines
1.5 KiB
Diff
39 lines
1.5 KiB
Diff
From 222cb8f6df4f0e5964a5dfcdc9a4eb9ad2e631a6 Mon Sep 17 00:00:00 2001
|
|
From: James Clarke <jrtc27@jrtc27.com>
|
|
Date: Tue, 26 Feb 2019 18:40:14 +0000
|
|
Subject: [PATCH 266/270] 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>
|
|
---
|
|
grub-core/osdep/freebsd/getroot.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/grub-core/osdep/freebsd/getroot.c b/grub-core/osdep/freebsd/getroot.c
|
|
index ccc1d70..b1e8244 100644
|
|
--- a/grub-core/osdep/freebsd/getroot.c
|
|
+++ b/grub-core/osdep/freebsd/getroot.c
|
|
@@ -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;
|
|
--
|
|
1.8.3.1
|
|
|