efi_selftest: testing read-only variables
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 26 Sep 2019 20:10:25 +0000 (22:10 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 6 Oct 2019 14:02:37 +0000 (16:02 +0200)
The UEFI spec has this sentence:
"Variables that have runtime access but that are not nonvolatile are
read-only data variables once ExitBootServices() is performed."

At least EDK2 therefore treats variable PlatformLangCodes only as read-only
at runtime. Nowhere do we make this variable read-only in U-Boot.

Do not use variable PlatformLangCodes for testing if the read only
attribute of variables is observed before ExitBootServices().

Fixes: 5a24239c951e ("efi_loader: selftest: enable APPEND_WRITE tests")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_selftest/efi_selftest_variables.c

index 02c9d30a3d40d56de690e2d0d1bf32ff3024ee08..5d98c029b8690daf29e4225d712368171969cf62 100644 (file)
@@ -21,9 +21,6 @@ static const efi_guid_t guid_vendor0 =
 static const efi_guid_t guid_vendor1 =
        EFI_GUID(0xff629290, 0x1fc1, 0xd73f,
                 0x8f, 0xb1, 0x32, 0xf9, 0x0c, 0xa0, 0x42, 0xea);
-static const efi_guid_t guid_global =
-       EFI_GUID(0x8be4df61, 0x93ca, 0x11d2,
-                0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c);
 
 /*
  * Setup unit test.
@@ -143,14 +140,6 @@ static int execute(void)
                efi_st_error("SetVariable(APPEND_WRITE) with size 0 to non-existent variable returns wrong code\n");
                return EFI_ST_FAILURE;
        }
-       /* Append variable 3 */
-       ret = runtime->set_variable(L"PlatformLangCodes", &guid_global,
-                                   EFI_VARIABLE_BOOTSERVICE_ACCESS |
-                                   EFI_VARIABLE_RUNTIME_ACCESS |
-                                   EFI_VARIABLE_APPEND_WRITE,
-                                   15, v);
-       if (ret != EFI_WRITE_PROTECTED)
-               efi_st_todo("SetVariable(APPEND_WRITE) to read-only variable returns wrong code\n");
        /* Enumerate variables */
        boottime->set_mem(&guid, 16, 0);
        *varname = 0;