From: Vladimir Serbinenko Date: Sun, 10 Nov 2013 12:33:26 +0000 (+0100) Subject: Fix grub_machine_fini bitrot. X-Git-Tag: grub-2.02-beta1~416 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33690255c5c7513266f7048e25d6530d37257478;p=thirdparty%2Fgrub.git Fix grub_machine_fini bitrot. Reported by: Glenn Washburn. --- diff --git a/ChangeLog b/ChangeLog index f5ac82686..591e1ef15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-11-10 Vladimir Serbinenko + + Fix grub_machine_fini bitrot. + + Reported by: Glenn Washburn. + 2013-11-10 Vladimir Serbinenko * configure.ac: Remove leftover -fnested-funcions -Wl,-allow_execute. diff --git a/grub-core/kern/arm/efi/init.c b/grub-core/kern/arm/efi/init.c index bcb73518d..c83f331be 100644 --- a/grub-core/kern/arm/efi/init.c +++ b/grub-core/kern/arm/efi/init.c @@ -57,10 +57,13 @@ grub_machine_init (void) } void -grub_machine_fini (void) +grub_machine_fini (int flags) { grub_efi_boot_services_t *b; + if (!(flags & GRUB_LOADER_FLAG_NORETURN)) + return; + b = grub_efi_system_table->boot_services; efi_call_3 (b->set_timer, tmr_evt, GRUB_EFI_TIMER_PERIODIC, 0); diff --git a/grub-core/kern/emu/main.c b/grub-core/kern/emu/main.c index 8696e84b9..94c2902f6 100644 --- a/grub-core/kern/emu/main.c +++ b/grub-core/kern/emu/main.c @@ -225,7 +225,7 @@ main (int argc, char *argv[]) grub_hostfs_fini (); grub_host_fini (); - grub_machine_fini (); + grub_machine_fini (GRUB_LOADER_FLAG_NORETURN); return 0; } diff --git a/grub-core/kern/uboot/init.c b/grub-core/kern/uboot/init.c index 4b8c2e2ac..b80535d11 100644 --- a/grub-core/kern/uboot/init.c +++ b/grub-core/kern/uboot/init.c @@ -113,7 +113,7 @@ grub_machine_init (void) void -grub_machine_fini (void) +grub_machine_fini (int flags __attribute__ ((unused))) { } diff --git a/grub-core/lib/efi/halt.c b/grub-core/lib/efi/halt.c index 3e1ea47f4..39f3b31ae 100644 --- a/grub-core/lib/efi/halt.c +++ b/grub-core/lib/efi/halt.c @@ -27,7 +27,7 @@ void grub_halt (void) { - grub_machine_fini (); + grub_machine_fini (GRUB_LOADER_FLAG_NORETURN); #if !defined(__ia64__) && !defined(__arm__) grub_acpi_halt (); #endif diff --git a/grub-core/lib/efi/reboot.c b/grub-core/lib/efi/reboot.c index 9382370f7..366d5bb49 100644 --- a/grub-core/lib/efi/reboot.c +++ b/grub-core/lib/efi/reboot.c @@ -25,7 +25,7 @@ void grub_reboot (void) { - grub_machine_fini (); + grub_machine_fini (GRUB_LOADER_FLAG_NORETURN); efi_call_4 (grub_efi_system_table->runtime_services->reset_system, GRUB_EFI_RESET_COLD, GRUB_EFI_SUCCESS, 0, NULL); for (;;) ; diff --git a/grub-core/lib/uboot/halt.c b/grub-core/lib/uboot/halt.c index 9d5a1386d..0d7990645 100644 --- a/grub-core/lib/uboot/halt.c +++ b/grub-core/lib/uboot/halt.c @@ -23,7 +23,7 @@ void grub_halt (void) { - grub_machine_fini (); + grub_machine_fini (GRUB_LOADER_FLAG_NORETURN); /* Just stop here */ diff --git a/grub-core/lib/uboot/reboot.c b/grub-core/lib/uboot/reboot.c index e5c54d467..0bdedca1d 100644 --- a/grub-core/lib/uboot/reboot.c +++ b/grub-core/lib/uboot/reboot.c @@ -23,7 +23,7 @@ void grub_reboot (void) { - grub_machine_fini (); + grub_machine_fini (GRUB_LOADER_FLAG_NORETURN); grub_uboot_reset (); while (1);