efi_loader: clear signaled state in CheckEvent
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 18 Feb 2018 10:32:02 +0000 (11:32 +0100)
committerAlexander Graf <agraf@suse.de>
Wed, 4 Apr 2018 09:00:06 +0000 (11:00 +0200)
CheckEvent must clear the signaled state.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_boottime.c

index 9ca2e8161ec657c77acb95f2acb178e1ae6230af..8137ef521e40ffcd1686a3c01399dfb7b19d916e 100644 (file)
@@ -818,7 +818,8 @@ static efi_status_t EFIAPI efi_close_event(struct efi_event *event)
  * See the Unified Extensible Firmware Interface (UEFI) specification
  * for details.
  *
- * If an event is not signaled yet the notification function is queued.
+ * If an event is not signaled yet, the notification function is queued.
+ * The signaled state is cleared.
  *
  * @event      event to check
  * @return     status code
@@ -836,8 +837,10 @@ static efi_status_t EFIAPI efi_check_event(struct efi_event *event)
                        break;
                if (!event->is_signaled)
                        efi_signal_event(event, true);
-               if (event->is_signaled)
+               if (event->is_signaled) {
+                       event->is_signaled = false;
                        return EFI_EXIT(EFI_SUCCESS);
+               }
                return EFI_EXIT(EFI_NOT_READY);
        }
        return EFI_EXIT(EFI_INVALID_PARAMETER);