Compare commits
No commits in common. 'i9.5-beta' and 'c9' have entirely different histories.
@ -1,159 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Marta Lewandowska <mlewando@redhat.com>
|
|
||||||
Date: Mon, 9 Oct 2023 08:53:18 +0200
|
|
||||||
Subject: [PATCH] search command: add flag to only search root dev
|
|
||||||
|
|
||||||
bz#2223437
|
|
||||||
Signed-off-by: Marta Lewandowska <mlewando@redhat.com>
|
|
||||||
---
|
|
||||||
grub-core/commands/search.c | 36 ++++++++++++++++++++++++++++++++++++
|
|
||||||
grub-core/commands/search_wrap.c | 5 +++++
|
|
||||||
grub-core/kern/misc.c | 30 ++++++++++++++++++++++++++++++
|
|
||||||
include/grub/misc.h | 1 +
|
|
||||||
include/grub/search.h | 3 ++-
|
|
||||||
5 files changed, 74 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/grub-core/commands/search.c b/grub-core/commands/search.c
|
|
||||||
index 57d26ced8a8e..94fe8b2872a1 100644
|
|
||||||
--- a/grub-core/commands/search.c
|
|
||||||
+++ b/grub-core/commands/search.c
|
|
||||||
@@ -85,6 +85,42 @@ iterate_device (const char *name, void *data)
|
|
||||||
grub_device_close (dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* Skip it if it's not the root device when requested. */
|
|
||||||
+ if (ctx->flags & SEARCH_FLAGS_ROOTDEV_ONLY)
|
|
||||||
+ {
|
|
||||||
+ const char *root_dev;
|
|
||||||
+ root_dev = grub_env_get ("root");
|
|
||||||
+ if (root_dev != NULL && *root_dev != '\0')
|
|
||||||
+ {
|
|
||||||
+ char *root_disk = grub_malloc (grub_strlen(root_dev) + 1);
|
|
||||||
+ char *name_disk = grub_malloc (grub_strlen(name) + 1);
|
|
||||||
+ char *rem_1 = grub_malloc(grub_strlen(root_dev) + 1);
|
|
||||||
+ char *rem_2 = grub_malloc(grub_strlen(name) + 1);
|
|
||||||
+
|
|
||||||
+ if (root_disk != NULL && name_disk != NULL &&
|
|
||||||
+ rem_1 != NULL && rem_2 != NULL)
|
|
||||||
+ {
|
|
||||||
+ /* get just the disk name; partitions will be different. */
|
|
||||||
+ grub_str_sep (root_dev, root_disk, ',', rem_1);
|
|
||||||
+ grub_str_sep (name, name_disk, ',', rem_2);
|
|
||||||
+ if (root_disk != NULL && *root_disk != '\0' &&
|
|
||||||
+ name_disk != NULL && *name_disk != '\0')
|
|
||||||
+ if (grub_strcmp(root_disk, name_disk) != 0)
|
|
||||||
+ {
|
|
||||||
+ grub_free (root_disk);
|
|
||||||
+ grub_free (name_disk);
|
|
||||||
+ grub_free (rem_1);
|
|
||||||
+ grub_free (rem_2);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ grub_free (root_disk);
|
|
||||||
+ grub_free (name_disk);
|
|
||||||
+ grub_free (rem_1);
|
|
||||||
+ grub_free (rem_2);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#ifdef DO_SEARCH_FS_UUID
|
|
||||||
#define compare_fn grub_strcasecmp
|
|
||||||
#else
|
|
||||||
diff --git a/grub-core/commands/search_wrap.c b/grub-core/commands/search_wrap.c
|
|
||||||
index 0b62acf85359..06b5f51eefb5 100644
|
|
||||||
--- a/grub-core/commands/search_wrap.c
|
|
||||||
+++ b/grub-core/commands/search_wrap.c
|
|
||||||
@@ -41,6 +41,7 @@ static const struct grub_arg_option options[] =
|
|
||||||
ARG_TYPE_STRING},
|
|
||||||
{"no-floppy", 'n', 0, N_("Do not probe any floppy drive."), 0, 0},
|
|
||||||
{"efidisk-only", 0, 0, N_("Only probe EFI disks."), 0, 0},
|
|
||||||
+ {"root-dev-only", 'r', 0, N_("Only probe root device."), 0, 0},
|
|
||||||
{"hint", 'h', GRUB_ARG_OPTION_REPEATABLE,
|
|
||||||
N_("First try the device HINT. If HINT ends in comma, "
|
|
||||||
"also try subpartitions"), N_("HINT"), ARG_TYPE_STRING},
|
|
||||||
@@ -75,6 +76,7 @@ enum options
|
|
||||||
SEARCH_SET,
|
|
||||||
SEARCH_NO_FLOPPY,
|
|
||||||
SEARCH_EFIDISK_ONLY,
|
|
||||||
+ SEARCH_ROOTDEV_ONLY,
|
|
||||||
SEARCH_HINT,
|
|
||||||
SEARCH_HINT_IEEE1275,
|
|
||||||
SEARCH_HINT_BIOS,
|
|
||||||
@@ -189,6 +191,9 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
|
|
||||||
if (state[SEARCH_EFIDISK_ONLY].set)
|
|
||||||
flags |= SEARCH_FLAGS_EFIDISK_ONLY;
|
|
||||||
|
|
||||||
+ if (state[SEARCH_ROOTDEV_ONLY].set)
|
|
||||||
+ flags |= SEARCH_FLAGS_ROOTDEV_ONLY;
|
|
||||||
+
|
|
||||||
if (state[SEARCH_LABEL].set)
|
|
||||||
grub_search_label (id, var, flags, hints, nhints);
|
|
||||||
else if (state[SEARCH_FS_UUID].set)
|
|
||||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
|
||||||
index cb454614022f..50af9ee1bdd9 100644
|
|
||||||
--- a/grub-core/kern/misc.c
|
|
||||||
+++ b/grub-core/kern/misc.c
|
|
||||||
@@ -619,6 +619,36 @@ grub_reverse (char *str)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Separate string into two parts, broken up by delimiter delim. */
|
|
||||||
+void
|
|
||||||
+grub_str_sep (const char *s, char *p, char delim, char *r)
|
|
||||||
+{
|
|
||||||
+ char* t = grub_strndup(s, grub_strlen(s));
|
|
||||||
+
|
|
||||||
+ if (t != NULL && *t != '\0')
|
|
||||||
+ {
|
|
||||||
+ char* tmp = t;
|
|
||||||
+
|
|
||||||
+ while (((*p = *t) != '\0') && ((*p = *t) != delim))
|
|
||||||
+ {
|
|
||||||
+ p++;
|
|
||||||
+ t++;
|
|
||||||
+ }
|
|
||||||
+ *p = '\0';
|
|
||||||
+
|
|
||||||
+ if (*t != '\0')
|
|
||||||
+ {
|
|
||||||
+ t++;
|
|
||||||
+ while ((*r++ = *t++) != '\0')
|
|
||||||
+ ;
|
|
||||||
+ *r = '\0';
|
|
||||||
+ }
|
|
||||||
+ grub_free (tmp);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ grub_free (t);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Divide N by D, return the quotient, and store the remainder in *R. */
|
|
||||||
grub_uint64_t
|
|
||||||
grub_divmod64 (grub_uint64_t n, grub_uint64_t d, grub_uint64_t *r)
|
|
||||||
diff --git a/include/grub/misc.h b/include/grub/misc.h
|
|
||||||
index faae0ae8606c..981526644d29 100644
|
|
||||||
--- a/include/grub/misc.h
|
|
||||||
+++ b/include/grub/misc.h
|
|
||||||
@@ -314,6 +314,7 @@ void *EXPORT_FUNC(grub_memset) (void *s, int c, grub_size_t n);
|
|
||||||
grub_size_t EXPORT_FUNC(grub_strlen) (const char *s) WARN_UNUSED_RESULT;
|
|
||||||
int EXPORT_FUNC(grub_printf) (const char *fmt, ...) __attribute__ ((format (GNU_PRINTF, 1, 2)));
|
|
||||||
int EXPORT_FUNC(grub_printf_) (const char *fmt, ...) __attribute__ ((format (GNU_PRINTF, 1, 2)));
|
|
||||||
+void EXPORT_FUNC(grub_str_sep) (const char *s, char *p, char delim, char *r);
|
|
||||||
|
|
||||||
/* Replace all `ch' characters of `input' with `with' and copy the
|
|
||||||
result into `output'; return EOS address of `output'. */
|
|
||||||
diff --git a/include/grub/search.h b/include/grub/search.h
|
|
||||||
index 4190aeb2cbf5..321d1400e451 100644
|
|
||||||
--- a/include/grub/search.h
|
|
||||||
+++ b/include/grub/search.h
|
|
||||||
@@ -22,7 +22,8 @@
|
|
||||||
enum search_flags
|
|
||||||
{
|
|
||||||
SEARCH_FLAGS_NO_FLOPPY = 1,
|
|
||||||
- SEARCH_FLAGS_EFIDISK_ONLY = 2
|
|
||||||
+ SEARCH_FLAGS_EFIDISK_ONLY = 2,
|
|
||||||
+ SEARCH_FLAGS_ROOTDEV_ONLY = 4
|
|
||||||
};
|
|
||||||
|
|
||||||
void grub_search_fs_file (const char *key, const char *var,
|
|
@ -1,29 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Leo Sandoval <lsandova@redhat.com>
|
|
||||||
Date: Mon, 1 Jul 2024 12:52:13 -0600
|
|
||||||
Subject: [PATCH] grub-mkconfig.in: turn off executable owner bit
|
|
||||||
|
|
||||||
Stricker permissions are required on the grub.cfg file, resulting in
|
|
||||||
at most 0600 owner's file permissions. This resolves conflicting
|
|
||||||
requirement permissions on grub2-pc package's grub2.cfg file.
|
|
||||||
|
|
||||||
Resolves: RHEL-45870
|
|
||||||
|
|
||||||
Signed-off-by: Leo Sandoval <lsandova@redhat.com>
|
|
||||||
---
|
|
||||||
util/grub-mkconfig.in | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
|
||||||
index 34f7c13fc..f47b2735d 100644
|
|
||||||
--- a/util/grub-mkconfig.in
|
|
||||||
+++ b/util/grub-mkconfig.in
|
|
||||||
@@ -320,7 +320,7 @@ and /etc/grub.d/* files or please file a bug report with
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
# none of the children aborted with error, install the new grub.cfg
|
|
||||||
- oldumask=$(umask); umask 077
|
|
||||||
+ oldumask=$(umask); umask 177
|
|
||||||
cat ${grub_cfg}.new > ${grub_cfg}
|
|
||||||
umask $oldumask
|
|
||||||
rm -f ${grub_cfg}.new
|
|
@ -1,40 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nicolas Frayer <nfrayer@redhat.com>
|
|
||||||
Date: Tue, 16 Jul 2024 11:11:43 +0200
|
|
||||||
Subject: [PATCH] grub2-mkconfig: Ensure grub cfg stub is not overwritten
|
|
||||||
|
|
||||||
/boot/efi/EFI/$os_name/grub.cfg contains a grub cfg stub
|
|
||||||
that should not be overwritten by grub2-mkconfig.
|
|
||||||
Ensure that we prevent this from happening.
|
|
||||||
|
|
||||||
Signed-off-by: Marta Lewandowska <mlewando@redhat.com>
|
|
||||||
Signed-off-by: Nicolas Frayer <nfrayer@redhat.com>
|
|
||||||
---
|
|
||||||
util/grub-mkconfig.in | 14 ++++++++++++++
|
|
||||||
1 file changed, 14 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
|
||||||
index 34f7c13fc521..34d0120d0ba2 100644
|
|
||||||
--- a/util/grub-mkconfig.in
|
|
||||||
+++ b/util/grub-mkconfig.in
|
|
||||||
@@ -114,6 +114,20 @@ do
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
+os_name=$(grep '^ID=' /etc/os-release | sed 's/ID=//')
|
|
||||||
+if test "$os_name" = '"rhel"'; then
|
|
||||||
+ os_name=redhat
|
|
||||||
+elif test "$os_name" = '"centos"'; then
|
|
||||||
+ os_name=centos
|
|
||||||
+fi
|
|
||||||
+if test "x${grub_cfg}" = "x/boot/efi/EFI/$os_name/grub.cfg" &&\
|
|
||||||
+ mountpoint -q /boot/efi; then
|
|
||||||
+ gettext_printf "Running \`grub2-mkconfig -o %s' will overwrite the GRUB wrapper.\n" "$grub_cfg" 1>&2
|
|
||||||
+ gettext_printf "Please run \`grub2-mkconfig -o /boot/grub2/grub.cfg' instead to update grub.cfg.\n" 1>&2
|
|
||||||
+ gettext_printf "GRUB configuration file was not updated.\n" 1>&2
|
|
||||||
+ exit 1
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
if [ "x$EUID" = "x" ] ; then
|
|
||||||
EUID=`id -u`
|
|
||||||
fi
|
|
@ -1,25 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: raravind <raravind@redhat.com>
|
|
||||||
Date: Tue, 9 May 2023 11:29:35 +0200
|
|
||||||
Subject: [PATCH] chainloader: remove device path debug message
|
|
||||||
|
|
||||||
Remove the debug message "/EndEntire" while using GRUB chainloader command.
|
|
||||||
|
|
||||||
Signed-off-by: raravind <raravind@redhat.com>
|
|
||||||
(cherry picked from commit f75f5386b7a6a7cb2e10d30f817a3564c0a28dd7)
|
|
||||||
---
|
|
||||||
grub-core/loader/efi/chainloader.c | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
|
||||||
index dd31ac9bb318..b1c86dab2b60 100644
|
|
||||||
--- a/grub-core/loader/efi/chainloader.c
|
|
||||||
+++ b/grub-core/loader/efi/chainloader.c
|
|
||||||
@@ -210,7 +210,6 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
|
|
||||||
/* Fill the file path for the directory. */
|
|
||||||
d = (grub_efi_device_path_t *) ((char *) file_path
|
|
||||||
+ ((char *) d - (char *) dp));
|
|
||||||
- grub_efi_print_device_path (d);
|
|
||||||
if (copy_file_path ((grub_efi_file_path_device_path_t *) d,
|
|
||||||
dir_start, dir_end - dir_start) != GRUB_ERR_NONE)
|
|
||||||
{
|
|
@ -1,30 +0,0 @@
|
|||||||
From ac5b2bc87a6c361fd504898a368f0867ef3e2679 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrew Lukoshko <alukoshko@almalinux.org>
|
|
||||||
Date: Wed, 31 Jul 2024 16:06:10 +0000
|
|
||||||
Subject: [PATCH] grub2-mkconfig: Simplify os_name detection
|
|
||||||
|
|
||||||
---
|
|
||||||
util/grub-mkconfig.in | 7 +------
|
|
||||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
|
||||||
index 7a0738b..ebf5150 100644
|
|
||||||
--- a/util/grub-mkconfig.in
|
|
||||||
+++ b/util/grub-mkconfig.in
|
|
||||||
@@ -114,12 +114,7 @@ do
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
-os_name=$(grep '^ID=' /etc/os-release | sed 's/ID=//')
|
|
||||||
-if test "$os_name" = '"rhel"'; then
|
|
||||||
- os_name=redhat
|
|
||||||
-elif test "$os_name" = '"centos"'; then
|
|
||||||
- os_name=centos
|
|
||||||
-fi
|
|
||||||
+os_name=$(grep ^ID= /etc/os-release | sed -e 's/^ID=//' -e 's/rhel/redhat/' -e 's/\"//g')
|
|
||||||
if test "x${grub_cfg}" = "x/boot/efi/EFI/$os_name/grub.cfg" &&\
|
|
||||||
mountpoint -q /boot/efi; then
|
|
||||||
gettext_printf "Running \`grub2-mkconfig -o %s' will overwrite the GRUB wrapper.\n" "$grub_cfg" 1>&2
|
|
||||||
--
|
|
||||||
2.43.5
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nicolas Frayer <nfrayer@redhat.com>
|
|
||||||
Date: Thu, 1 Aug 2024 11:13:20 +0200
|
|
||||||
Subject: [PATCH] grub/mkconfig: Remove check for mount point for grub cfg stub
|
|
||||||
|
|
||||||
Remove mountpoint when checking whether or not the grub cfg stub
|
|
||||||
exists and add -s to the test. This should cover scenarios where
|
|
||||||
the ESP doesn't have a seperate partition but still uses a grub
|
|
||||||
cfg stub
|
|
||||||
|
|
||||||
Signed-off-by: Nicolas Frayer <nfrayer@redhat.com>
|
|
||||||
---
|
|
||||||
util/grub-mkconfig.in | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
|
||||||
index a4972039b751..3f131eea2b12 100644
|
|
||||||
--- a/util/grub-mkconfig.in
|
|
||||||
+++ b/util/grub-mkconfig.in
|
|
||||||
@@ -115,8 +115,7 @@ do
|
|
||||||
done
|
|
||||||
|
|
||||||
os_name=$(grep ^ID= /etc/os-release | sed -e 's/^ID=//' -e 's/rhel/redhat/' -e 's/\"//g')
|
|
||||||
-if test "x${grub_cfg}" = "x/boot/efi/EFI/$os_name/grub.cfg" &&\
|
|
||||||
- mountpoint -q /boot/efi; then
|
|
||||||
+if test -s "${grub_cfg}" && test "x${grub_cfg}" = "x/boot/efi/EFI/$os_name/grub.cfg"; then
|
|
||||||
gettext_printf "Running \`grub2-mkconfig -o %s' will overwrite the GRUB wrapper.\n" "$grub_cfg" 1>&2
|
|
||||||
gettext_printf "Please run \`grub2-mkconfig -o /boot/grub2/grub.cfg' instead to update grub.cfg.\n" 1>&2
|
|
||||||
gettext_printf "GRUB configuration file was not updated.\n" 1>&2
|
|
@ -1,44 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
||||||
Date: Tue, 28 Jun 2022 23:06:46 +0200
|
|
||||||
Subject: [PATCH] arm64: Use proper memory type for kernel allocation
|
|
||||||
|
|
||||||
Currently, the kernel pages are allocated with type EFI_LOADER_DATA.
|
|
||||||
While the vast majority of systems will happily execute code from those
|
|
||||||
pages (i.e. don't care about memory protection), the Microsoft Surface
|
|
||||||
Pro X stalls, as this memory is not designated as "executable".
|
|
||||||
|
|
||||||
Therefore, allocate the kernel pages as EFI_LOADER_CODE to request
|
|
||||||
memory that is actually executable.
|
|
||||||
|
|
||||||
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
|
|
||||||
---
|
|
||||||
grub-core/loader/arm64/linux.c | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
|
|
||||||
index 419f2201df8b..a3a193c255e9 100644
|
|
||||||
--- a/grub-core/loader/arm64/linux.c
|
|
||||||
+++ b/grub-core/loader/arm64/linux.c
|
|
||||||
@@ -26,7 +26,9 @@
|
|
||||||
#include <grub/mm.h>
|
|
||||||
#include <grub/types.h>
|
|
||||||
#include <grub/cpu/linux.h>
|
|
||||||
+#include <grub/efi/api.h>
|
|
||||||
#include <grub/efi/efi.h>
|
|
||||||
+#include <grub/cpu/efi/memory.h>
|
|
||||||
#include <grub/efi/fdtload.h>
|
|
||||||
#include <grub/efi/memory.h>
|
|
||||||
#include <grub/efi/linux.h>
|
|
||||||
@@ -403,7 +405,10 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|
||||||
grub_loader_unset();
|
|
||||||
|
|
||||||
kernel_alloc_pages = GRUB_EFI_BYTES_TO_PAGES (kernel_size + align - 1);
|
|
||||||
- kernel_alloc_addr = grub_efi_allocate_any_pages (kernel_alloc_pages);
|
|
||||||
+ kernel_alloc_addr = grub_efi_allocate_pages_real (GRUB_EFI_MAX_USABLE_ADDRESS,
|
|
||||||
+ kernel_alloc_pages,
|
|
||||||
+ GRUB_EFI_ALLOCATE_MAX_ADDRESS,
|
|
||||||
+ GRUB_EFI_LOADER_CODE);
|
|
||||||
grub_dprintf ("linux", "kernel numpages: %d\n", kernel_alloc_pages);
|
|
||||||
if (!kernel_alloc_addr)
|
|
||||||
{
|
|
@ -1,4 +1,3 @@
|
|||||||
sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md
|
sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md
|
||||||
grub,3,Free Software Foundation,grub,@@VERSION@@,https//www.gnu.org/software/grub/
|
grub,3,Free Software Foundation,grub,@@VERSION@@,https//www.gnu.org/software/grub/
|
||||||
grub.rh,2,Red Hat,grub2,@@RHEL_VERSION_RELEASE@@,mailto:secalert@redhat.com
|
grub.rh,2,Red Hat,grub2,@@VERSION_RELEASE@@,mailto:secalert@redhat.com
|
||||||
grub.msvsphere,2,MSVSphere,grub2,@@VERSION_RELEASE@@,mailto:security@msvsphere-os.ru
|
|
||||||
|
Loading…
Reference in new issue