Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:hellcp:flickerfree-boot
grub2
0046-squash-verifiers-Move-verifiers-API-to-ker...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0046-squash-verifiers-Move-verifiers-API-to-kernel-image.patch of Package grub2
From 59ac440754a43c6e964e924a086af066e04e753e Mon Sep 17 00:00:00 2001 From: Michael Chang <mchang@suse.com> Date: Fri, 26 Feb 2021 19:43:14 +0800 Subject: [PATCH 46/46] squash! verifiers: Move verifiers API to kernel image In case there's broken i386-pc setup running inconsistent installs for module in filesystem and core image on the disk, keeping the verifiers as module for i386-pc to avoid potential issue of looking up symbols. --- configure.ac | 1 + grub-core/Makefile.am | 2 ++ grub-core/Makefile.core.def | 8 +++++++- grub-core/kern/main.c | 4 ++++ grub-core/kern/verifiers.c | 11 +++++++++++ include/grub/verify.h | 9 +++++++++ 6 files changed, 34 insertions(+), 1 deletion(-) Index: grub-2.06~rc1/configure.ac =================================================================== --- grub-2.06~rc1.orig/configure.ac +++ grub-2.06~rc1/configure.ac @@ -1985,6 +1985,7 @@ AM_CONDITIONAL([COND_real_platform], [te AM_CONDITIONAL([COND_emu], [test x$platform = xemu]) AM_CONDITIONAL([COND_NOT_emu], [test x$platform != xemu]) AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc]) +AM_CONDITIONAL([COND_NOT_i386_pc], [test x$target_cpu != xi386 -o x$platform != xpc]) AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi]) AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi]) AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu]) Index: grub-2.06~rc1/grub-core/Makefile.am =================================================================== --- grub-2.06~rc1.orig/grub-core/Makefile.am +++ grub-2.06~rc1/grub-core/Makefile.am @@ -93,7 +93,9 @@ KERNEL_HEADER_FILES += $(top_srcdir)/inc KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/stack_protector.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h +if COND_NOT_i386_pc KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/verify.h +endif KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h Index: grub-2.06~rc1/grub-core/Makefile.core.def =================================================================== --- grub-2.06~rc1.orig/grub-core/Makefile.core.def +++ grub-2.06~rc1/grub-core/Makefile.core.def @@ -141,7 +141,7 @@ kernel = { common = kern/rescue_parser.c; common = kern/rescue_reader.c; common = kern/term.c; - common = kern/verifiers.c; + nopc = kern/verifiers.c; noemu = kern/compiler-rt.c; noemu = kern/mm.c; @@ -947,6 +947,12 @@ module = { }; module = { + name = verifiers; + common = kern/verifiers.c; + enable = i386_pc; +}; + +module = { name = hdparm; common = commands/hdparm.c; enable = pci; Index: grub-2.06~rc1/grub-core/kern/main.c =================================================================== --- grub-2.06~rc1.orig/grub-core/kern/main.c +++ grub-2.06~rc1/grub-core/kern/main.c @@ -29,7 +29,9 @@ #include <grub/command.h> #include <grub/reader.h> #include <grub/parser.h> +#ifndef GRUB_MACHINE_PCBIOS #include <grub/verify.h> +#endif #ifdef GRUB_MACHINE_PCBIOS #include <grub/machine/memory.h> @@ -275,8 +277,10 @@ grub_main (void) grub_printf ("Welcome to GRUB!\n\n"); grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); +#ifndef GRUB_MACHINE_PCBIOS /* Init verifiers API. */ grub_verifiers_init (); +#endif grub_load_config (); Index: grub-2.06~rc1/grub-core/kern/verifiers.c =================================================================== --- grub-2.06~rc1.orig/grub-core/kern/verifiers.c +++ grub-2.06~rc1/grub-core/kern/verifiers.c @@ -221,8 +221,19 @@ grub_verify_string (char *str, enum grub return GRUB_ERR_NONE; } +#ifdef GRUB_MACHINE_PCBIOS +GRUB_MOD_INIT(verifiers) +#else void grub_verifiers_init (void) +#endif { grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open); } + +#ifdef GRUB_MACHINE_PCBIOS +GRUB_MOD_FINI(verifiers) +{ + grub_file_filter_unregister (GRUB_FILE_FILTER_VERIFY); +} +#endif Index: grub-2.06~rc1/include/grub/verify.h =================================================================== --- grub-2.06~rc1.orig/include/grub/verify.h +++ grub-2.06~rc1/include/grub/verify.h @@ -64,10 +64,14 @@ struct grub_file_verifier grub_err_t (*verify_string) (char *str, enum grub_verify_string_type type); }; +#ifdef GRUB_MACHINE_PCBIOS +extern struct grub_file_verifier *grub_file_verifiers; +#else extern struct grub_file_verifier *EXPORT_VAR (grub_file_verifiers); extern void grub_verifiers_init (void); +#endif static inline void grub_verifier_register (struct grub_file_verifier *ver) @@ -81,7 +85,12 @@ grub_verifier_unregister (struct grub_fi grub_list_remove (GRUB_AS_LIST (ver)); } +#ifdef GRUB_MACHINE_PCBIOS +grub_err_t +grub_verify_string (char *str, enum grub_verify_string_type type); +#else extern grub_err_t EXPORT_FUNC (grub_verify_string) (char *str, enum grub_verify_string_type type); +#endif #endif /* ! GRUB_VERIFY_HEADER */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor