20 Star 0 Fork 83

openEuler-RISC-V / grub2

forked from src-openEuler / grub2 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
backport-mm-Temporarily-disable-grub_mm_debug-while-calling-grub_vprintf-in-grub_printf.patch 1.76 KB
一键复制 编辑 原始数据 按行查看 历史
From a4430355a3237fc756480349e9167667b0e89476 Mon Sep 17 00:00:00 2001
From: Glenn Washburn <development@efficientek.com>
Date: Tue, 15 Feb 2022 12:36:43 -0600
Subject: mm: Temporarily disable grub_mm_debug while calling grub_vprintf() in
grub_printf()
To prevent infinite recursion when grub_mm_debug is on, disable it when
calling grub_vprintf(). One such call loop is:
grub_vprintf() -> parse_printf_args() -> parse_printf_arg_fmt() ->
grub_debug_calloc() -> grub_printf() -> grub_vprintf().
Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Conflict:NA
Reference:https://git.savannah.gnu.org/cgit/grub.git/commit?id=a4430355a3237fc756480349e9167667b0e89476
---
grub-core/kern/misc.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
index de40f56..18bde5d 100644
--- a/grub-core/kern/misc.c
+++ b/grub-core/kern/misc.c
@@ -113,10 +113,30 @@ grub_printf (const char *fmt, ...)
va_list ap;
int ret;
+#if defined(MM_DEBUG) && !defined(GRUB_UTIL) && !defined (GRUB_MACHINE_EMU)
+ /*
+ * To prevent infinite recursion when grub_mm_debug is on, disable it
+ * when calling grub_vprintf(). One such call loop is:
+ * grub_vprintf() -> parse_printf_args() -> parse_printf_arg_fmt() ->
+ * grub_debug_calloc() -> grub_printf() -> grub_vprintf().
+ */
+ int grub_mm_debug_save = 0;
+
+ if (grub_mm_debug)
+ {
+ grub_mm_debug_save = grub_mm_debug;
+ grub_mm_debug = 0;
+ }
+#endif
+
va_start (ap, fmt);
ret = grub_vprintf (fmt, ap);
va_end (ap);
+#if defined(MM_DEBUG) && !defined(GRUB_UTIL) && !defined (GRUB_MACHINE_EMU)
+ grub_mm_debug = grub_mm_debug_save;
+#endif
+
return ret;
}
--
cgit v1.1
1
https://gitee.com/openeuler-risc-v/grub2.git
git@gitee.com:openeuler-risc-v/grub2.git
openeuler-risc-v
grub2
grub2
master

搜索帮助