Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2020-08-15 21:18:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Sat Aug 15 21:18:32 2020 rev:224 rq:826245 version:2.04 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2020-07-31 15:56:22.228376572 +0200 +++ /work/SRC/openSUSE:Factory/.grub2.new.3399/grub2.changes 2020-08-15 21:18:45.947568047 +0200 @@ -1,0 +2,7 @@ +Thu Aug 13 06:41:16 UTC 2020 - Michael Chang <mch...@suse.com> + +- Make grub-calloc inline to avoid symbol not found error as the system may not + use updated grub to boot the system (bsc#1174782) (bsc#1175060) (bsc#1175036) + * 0001-kern-mm.c-Make-grub_calloc-inline.patch + +------------------------------------------------------------------- New: ---- 0001-kern-mm.c-Make-grub_calloc-inline.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grub2.spec ++++++ --- /var/tmp/diff_new_pack.kySGF8/_old 2020-08-15 21:18:47.583568981 +0200 +++ /var/tmp/diff_new_pack.kySGF8/_new 2020-08-15 21:18:47.583568981 +0200 @@ -320,6 +320,7 @@ # bsc#1174570 VUL-0: EMBARGOED: CVE-2020-15707: grub2: linux: Fix integer # overflows in initrd size handling Patch713: 0010-linux-Fix-integer-overflows-in-initrd-size-handling.patch +Patch714: 0001-kern-mm.c-Make-grub_calloc-inline.patch Requires: gettext-runtime %if 0%{?suse_version} >= 1140 @@ -635,6 +636,7 @@ %patch711 -p1 %patch712 -p1 %patch713 -p1 +%patch714 -p1 %build # collect evidence to debug spurious build failure on SLE15 ++++++ 0001-kern-mm.c-Make-grub_calloc-inline.patch ++++++ >From c2475f1337dff2e2a3e45514119d5186e55753c1 Mon Sep 17 00:00:00 2001 From: Michael Chang <mch...@suse.com> Date: Thu, 13 Aug 2020 09:36:45 +0800 Subject: [PATCH] kern/mm.c : Make grub_calloc inline To circumvent the situation that symbol 'grub_calloc' not found would happen if system is using stray grub (ie not managed by system update) as stage1 that can be too old to load updated modules. --- grub-core/kern/mm.c | 28 ---------------------------- include/grub/mm.h | 32 +++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c index f2822a836..dacdaa239 100644 --- a/grub-core/kern/mm.c +++ b/grub-core/kern/mm.c @@ -60,14 +60,10 @@ #include <config.h> #include <grub/mm.h> -#include <grub/misc.h> -#include <grub/err.h> #include <grub/types.h> #include <grub/disk.h> #include <grub/dl.h> -#include <grub/i18n.h> #include <grub/mm_private.h> -#include <grub/safemath.h> #ifdef MM_DEBUG # undef grub_calloc @@ -377,30 +373,6 @@ grub_memalign (grub_size_t align, grub_size_t size) return 0; } -/* - * Allocate NMEMB instances of SIZE bytes and return the pointer, or error on - * integer overflow. - */ -void * -grub_calloc (grub_size_t nmemb, grub_size_t size) -{ - void *ret; - grub_size_t sz = 0; - - if (grub_mul (nmemb, size, &sz)) - { - grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected")); - return NULL; - } - - ret = grub_memalign (0, sz); - if (!ret) - return NULL; - - grub_memset (ret, 0, sz); - return ret; -} - /* Allocate SIZE bytes and return the pointer. */ void * grub_malloc (grub_size_t size) diff --git a/include/grub/mm.h b/include/grub/mm.h index 9c38dd3ca..1754635e7 100644 --- a/include/grub/mm.h +++ b/include/grub/mm.h @@ -29,7 +29,6 @@ #endif void grub_mm_init_region (void *addr, grub_size_t size); -void *EXPORT_FUNC(grub_calloc) (grub_size_t nmemb, grub_size_t size); void *EXPORT_FUNC(grub_malloc) (grub_size_t size); void *EXPORT_FUNC(grub_zalloc) (grub_size_t size); void EXPORT_FUNC(grub_free) (void *ptr); @@ -37,6 +36,37 @@ void *EXPORT_FUNC(grub_realloc) (void *ptr, grub_size_t size); #ifndef GRUB_MACHINE_EMU void *EXPORT_FUNC(grub_memalign) (grub_size_t align, grub_size_t size); #endif +#if !defined(GRUB_UTIL) && !defined (GRUB_MACHINE_EMU) +#include <grub/misc.h> +#include <grub/err.h> +#include <grub/i18n.h> +#include <grub/safemath.h> +/* + * Allocate NMEMB instances of SIZE bytes and return the pointer, or error on + * integer overflow. + */ +static inline void * +grub_calloc (grub_size_t nmemb, grub_size_t size) +{ + void *ret; + grub_size_t sz = 0; + + if (grub_mul (nmemb, size, &sz)) + { + grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected")); + return NULL; + } + + ret = grub_memalign (0, sz); + if (!ret) + return NULL; + + grub_memset (ret, 0, sz); + return ret; +} +#else +void *EXPORT_FUNC(grub_calloc) (grub_size_t nmemb, grub_size_t size); +#endif void grub_mm_check_real (const char *file, int line); #define grub_mm_check() grub_mm_check_real (GRUB_FILE, __LINE__); -- 2.26.2