efi_selftest: sharpen ConvertPointer() test
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 27 Jul 2019 17:32:23 +0000 (19:32 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 30 Jul 2019 19:36:22 +0000 (21:36 +0200)
Now that ConvertPointer() is implemented throw an error if the result is
incorrect.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_selftest/efi_selftest_set_virtual_address_map.c

index 3ffb61b7e8f66b7177b0a683665278fe8d1ad940..a4e5a50f632bd9b262adb5193ce20d1503489ee8 100644 (file)
@@ -20,6 +20,7 @@ static u32 desc_version;
 static u64 page1;
 static u64 page2;
 static u32 notify_call_count;
+static bool convert_pointer_failed;
 
 /**
  * notify () - notification function
@@ -39,17 +40,28 @@ static void EFIAPI notify(struct efi_event *event, void *context)
 
        addr = (void *)(uintptr_t)page1;
        ret = runtime->convert_pointer(0, &addr);
-       if (ret != EFI_SUCCESS)
-               efi_st_todo("ConvertPointer failed\n");
-       if ((uintptr_t)addr != page1 + EFI_PAGE_SIZE)
-               efi_st_todo("ConvertPointer wrong address\n");
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("ConvertPointer failed\n");
+               convert_pointer_failed = true;
+               return;
+       }
+       if ((uintptr_t)addr != page1 + EFI_PAGE_SIZE) {
+               efi_st_error("ConvertPointer wrong address\n");
+               convert_pointer_failed = true;
+               return;
+       }
 
        addr = (void *)(uintptr_t)page2;
        ret = runtime->convert_pointer(0, &addr);
-       if (ret != EFI_SUCCESS)
-               efi_st_todo("ConvertPointer failed\n");
-       if ((uintptr_t)addr != page2 + 2 * EFI_PAGE_SIZE)
-               efi_st_todo("ConvertPointer wrong address\n");
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("ConvertPointer failed\n");
+               convert_pointer_failed = true;
+               return;
+       }
+       if ((uintptr_t)addr != page2 + 2 * EFI_PAGE_SIZE) {
+               efi_st_error("ConvertPointer wrong address\n");
+               convert_pointer_failed = true;
+       }
 }
 
 /**
@@ -181,6 +193,8 @@ static int execute(void)
                             notify_call_count);
                return EFI_ST_FAILURE;
        }
+       if (convert_pointer_failed)
+               return EFI_ST_FAILURE;
 
        return EFI_ST_SUCCESS;
 }