From ccf1b96e0eb8342adfc0a9f06f473a7e9218d753 Mon Sep 17 00:00:00 2001 From: Oskari Rauta Date: Wed, 21 Apr 2021 03:58:42 +0300 Subject: gummiboot: add new package Signed-off-by: Oskari Rauta --- utils/gummiboot/patches/020-fix-dev-mapping.patch | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 utils/gummiboot/patches/020-fix-dev-mapping.patch (limited to 'utils/gummiboot/patches/020-fix-dev-mapping.patch') diff --git a/utils/gummiboot/patches/020-fix-dev-mapping.patch b/utils/gummiboot/patches/020-fix-dev-mapping.patch new file mode 100644 index 000000000..0446aa2d0 --- /dev/null +++ b/utils/gummiboot/patches/020-fix-dev-mapping.patch @@ -0,0 +1,54 @@ +--- a/src/setup/setup.c ++++ b/src/setup/setup.c +@@ -83,6 +83,9 @@ static int verify_esp(const char *p, uin + blkid_probe b = NULL; + int r; + const char *v; ++ char buf[1024]; ++ ++ memset(buf, 0, sizeof(buf)); + + if (statfs(p, &sfs) < 0) { + fprintf(stderr, "Failed to check file system type of %s: %m\n", p); +@@ -122,24 +125,38 @@ static int verify_esp(const char *p, uin + return -ENODEV; + } + +- r = asprintf(&t, "/dev/block/%u:%u", major(st.st_dev), minor(st.st_dev)); ++ r = asprintf(&t, "/sys/dev/block/%u:%u", major(st.st_dev), minor(st.st_dev)); + if (r < 0) { + fprintf(stderr, "Out of memory.\n"); + return -ENOMEM; + } + ++ r = readlink(t, buf, sizeof(buf) - 1); ++ if (r < 0) { ++ fprintf(stderr, "Failed to identify device node for block device %u:%u\n", major(st.st_dev), minor(st.st_dev)); ++ return -ENOMEM; ++ } ++ ++ r = asprintf(&t, "/dev/%s", basename(buf)); ++ if (r < 0) { ++ fprintf(stderr, "Out of memory.\n"); ++ return -ENOMEM; ++ } ++ + errno = 0; + b = blkid_new_probe_from_filename(t); +- free(t); + if (!b) { + if (errno != 0) { +- fprintf(stderr, "Failed to open file system %s: %m\n", p); ++ fprintf(stderr, "Failed to open file system %s on %s: %m\n", p, t); ++ free(t); + return -errno; + } + ++ free(t); + fprintf(stderr, "Out of memory.\n"); + return -ENOMEM; + } ++ free(t); + + blkid_probe_enable_superblocks(b, 1); + blkid_probe_set_superblocks_flags(b, BLKID_SUBLKS_TYPE); -- cgit v1.2.3