efi_loader: non-volatile variable not deleted from file
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 2 Nov 2020 18:32:24 +0000 (19:32 +0100)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 9 Nov 2020 16:28:17 +0000 (17:28 +0100)
When deleting a non-volatile variable it was deleted from memory but the
deletion was not persisted to the file system.

SetVariable() may be called with attributes == 0 to delete a variable. To
determine if the deletion shall be persisted we have to consider the
non-volatile flag in the attributes of the deleted variable and not the
value passed in the call parameter.

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

index a10b9ca..0c689cf 100644 (file)
@@ -393,6 +393,7 @@ efi_status_t efi_set_variable_int(u16 *variable_name, const efi_guid_t *vendor,
 
        if (delete) {
                /* EFI_NOT_FOUND has been handled before */
+               attributes = var->attr;
                ret = EFI_SUCCESS;
        } else if (append) {
                u16 *old_data = var->name;