From e03ed6c1eebe42172070944d4d611cf58626cdd1 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Fri, 2 Jul 2010 13:47:14 +0100 Subject: [PATCH] * include/grub/misc.h (grub_reboot): Declare as noreturn. * kern/efi/efi.c (grub_reboot): Don't return, even if reset_system fails. (grub_halt): Likewise. * kern/ieee1275/openfw.c (grub_reboot): Don't return, even if reset-all fails. (grub_halt): Don't return, even if all of shut-down, power-off, and poweroff fail. --- ChangeLog | 11 +++++++++++ include/grub/misc.h | 2 +- kern/efi/efi.c | 2 ++ kern/ieee1275/openfw.c | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a8c5b4503..e1e7ef00d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-07-02 Colin Watson + + * include/grub/misc.h (grub_reboot): Declare as noreturn. + * kern/efi/efi.c (grub_reboot): Don't return, even if reset_system + fails. + (grub_halt): Likewise. + * kern/ieee1275/openfw.c (grub_reboot): Don't return, even if + reset-all fails. + (grub_halt): Don't return, even if all of shut-down, power-off, and + poweroff fail. + 2010-07-02 Colin Watson * kern/efi/init.c (grub_efi_init): set_watchdog_timer takes four diff --git a/include/grub/misc.h b/include/grub/misc.h index a1b753250..909e85b5f 100644 --- a/include/grub/misc.h +++ b/include/grub/misc.h @@ -298,7 +298,7 @@ grub_div_roundup (unsigned int x, unsigned int y) } /* Reboot the machine. */ -void EXPORT_FUNC (grub_reboot) (void); +void EXPORT_FUNC (grub_reboot) (void) __attribute__ ((noreturn)); #ifdef GRUB_MACHINE_PCBIOS /* Halt the system, using APM if possible. If NO_APM is true, don't diff --git a/kern/efi/efi.c b/kern/efi/efi.c index d8b225535..126e40901 100644 --- a/kern/efi/efi.c +++ b/kern/efi/efi.c @@ -170,6 +170,7 @@ grub_reboot (void) grub_efi_fini (); efi_call_4 (grub_efi_system_table->runtime_services->reset_system, GRUB_EFI_RESET_COLD, GRUB_EFI_SUCCESS, 0, NULL); + for (;;) ; } #endif @@ -179,6 +180,7 @@ grub_halt (void) grub_efi_fini (); efi_call_4 (grub_efi_system_table->runtime_services->reset_system, GRUB_EFI_RESET_SHUTDOWN, GRUB_EFI_SUCCESS, 0, NULL); + for (;;) ; } int diff --git a/kern/ieee1275/openfw.c b/kern/ieee1275/openfw.c index 5693f3be0..75767d13c 100644 --- a/kern/ieee1275/openfw.c +++ b/kern/ieee1275/openfw.c @@ -420,6 +420,7 @@ void grub_reboot (void) { grub_ieee1275_interpret ("reset-all", 0); + for (;;) ; } #endif @@ -431,4 +432,5 @@ grub_halt (void) grub_ieee1275_interpret ("shut-down", 0); grub_ieee1275_interpret ("power-off", 0); grub_ieee1275_interpret ("poweroff", 0); + for (;;) ; } -- 2.39.5