aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorAlexander Graf2016-07-21 01:44:46 +0200
committerTom Rini2016-07-25 12:00:06 -0400
commit492716662fbdc08e254dda2c209b320e2bf6c837 (patch)
tree7a69a329a4161101aae32cb7ebce1ed2cb315a1b /cmd
parente8fb4358c2ea3b5629f004f7d0d5624c860d7e70 (diff)
efi_loader: Make exposed image loader path absolute
When loading an efi image, we pass it the location it was loaded from. On file system backends, there are no relative paths, so we should always pass in absolute ones. For network paths, we may be relative. This fixes distro booting with grub2 for me when it fetches the grub2 config file from the loader partition. Reported-by: york sun <york.sun@nxp.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/bootefi.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 011f62c5b1c..d66892e69ee 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -290,6 +290,11 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path)
/* Patch bootefi_image_path to the target file path */
memset(bootefi_image_path[0].str, 0, sizeof(bootefi_image_path[0].str));
- snprintf(devname, sizeof(devname), "%s", path);
+ if (strcmp(dev, "Net")) {
+ /* Add leading / to fs paths, because they're absolute */
+ snprintf(devname, sizeof(devname), "/%s", path);
+ } else {
+ snprintf(devname, sizeof(devname), "%s", path);
+ }
ascii2unicode(bootefi_image_path[0].str, devname);
}