]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Report failures to stop the EFI timer tick event
authorMichael Brown <mcb30@ipxe.org>
Mon, 20 Jun 2016 15:08:17 +0000 (16:08 +0100)
committerMichael Brown <mcb30@ipxe.org>
Mon, 20 Jun 2016 15:08:17 +0000 (16:08 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/interface/efi/efi_timer.c

index a574e2043df81b124302fcd6d057f475e43d7450..da064120ab9a62515ae4f9628db82ae0e8bde3a6 100644 (file)
@@ -126,13 +126,27 @@ static void efi_tick_startup ( void ) {
  */
 static void efi_tick_shutdown ( int booting __unused ) {
        EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
+       EFI_STATUS efirc;
+       int rc;
 
        /* Stop timer tick */
-       bs->SetTimer ( efi_tick_event, TimerCancel, 0 );
+       if ( ( efirc = bs->SetTimer ( efi_tick_event, TimerCancel, 0 ) ) != 0 ){
+               rc = -EEFI ( efirc );
+               DBGC ( colour, "EFI could not stop timer tick: %s\n",
+                      strerror ( rc ) );
+               /* Self-destruct initiated */
+               return;
+       }
        DBGC ( colour, "EFI timer stopped\n" );
 
        /* Destroy timer tick event */
-       bs->CloseEvent ( efi_tick_event );
+       if ( ( efirc = bs->CloseEvent ( efi_tick_event ) ) != 0 ) {
+               rc = -EEFI ( efirc );
+               DBGC ( colour, "EFI could not destroy timer tick: %s\n",
+                      strerror ( rc ) );
+               /* Probably non-fatal */
+               return;
+       }
 }
 
 /** Timer tick startup function */