efi_selftest: fix variables test for GetNextVariableName()
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Mon, 21 Jan 2019 11:43:14 +0000 (12:43 +0100)
committerAlexander Graf <agraf@suse.de>
Wed, 13 Feb 2019 08:40:06 +0000 (09:40 +0100)
There is a bug in efi variables test.
Fix it with some cosmetic improvements.

Please note that efi variables test still fails at QueryVariableInfo()
and GetVariable(), but this is not due to a change in this patch.
  ==8<==
  Testing EFI API implementation

  Selected test: 'variables'

  Setting up 'variables'
  Setting up 'variables' succeeded

  Executing 'variables'
  .../u-boot/lib/efi_selftest/efi_selftest_variables.c(60):
  TODO: QueryVariableInfo failed
  .../u-boot/lib/efi_selftest/efi_selftest_variables.c(131):
  TODO: GetVariable returned wrong length 7
  .../u-boot/lib/efi_selftest/efi_selftest_variables.c(133):
  TODO: GetVariable returned wrong value
  Executing 'variables' succeeded

  Boot services terminated

  Summary: 0 failures
  ==>8==

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_selftest/efi_selftest_variables.c

index ffc8cad329505b9ca1ad03ab7a9cc29582ad22c4..47a8e7fb95c90cfe7a116a6b17943954b301bb5c 100644 (file)
@@ -141,19 +141,22 @@ static int execute(void)
                if (ret == EFI_NOT_FOUND)
                        break;
                if (ret != EFI_SUCCESS) {
-                       efi_st_todo("GetNextVariableName failed\n");
-                       break;
+                       efi_st_error("GetNextVariableName failed (%u)\n",
+                                    (unsigned int)ret);
+                       return EFI_ST_FAILURE;
                }
                if (!efi_st_memcmp(&guid, &guid_vendor0, sizeof(efi_guid_t)) &&
                    !efi_st_strcmp_16_8(varname, "efi_st_var0"))
-                       flag |= 2;
+                       flag |= 1;
                if (!efi_st_memcmp(&guid, &guid_vendor1, sizeof(efi_guid_t)) &&
                    !efi_st_strcmp_16_8(varname, "efi_st_var1"))
                        flag |= 2;
        }
-       if (flag != 3)
-               efi_st_todo(
+       if (flag != 3) {
+               efi_st_error(
                        "GetNextVariableName did not return all variables\n");
+               return EFI_ST_FAILURE;
+       }
        /* Delete variable 1 */
        ret = runtime->set_variable(L"efi_st_var1", &guid_vendor1,
                                    0, 0, NULL);