Compare commits
No commits in common. 'c9' and 'i9.5-beta' have entirely different histories.
@ -0,0 +1,159 @@
|
||||
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,
|
@ -0,0 +1,29 @@
|
||||
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
|
@ -0,0 +1,40 @@
|
||||
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
|
@ -0,0 +1,25 @@
|
||||
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)
|
||||
{
|
@ -0,0 +1,30 @@
|
||||
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
|
||||
|
@ -0,0 +1,29 @@
|
||||
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
|
@ -0,0 +1,44 @@
|
||||
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,3 +1,4 @@
|
||||
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.rh,2,Red Hat,grub2,@@VERSION_RELEASE@@,mailto:secalert@redhat.com
|
||||
grub.rh,2,Red Hat,grub2,@@RHEL_VERSION_RELEASE@@,mailto:secalert@redhat.com
|
||||
grub.msvsphere,2,MSVSphere,grub2,@@VERSION_RELEASE@@,mailto:security@msvsphere-os.ru
|
||||
|
Loading…
Reference in new issue