• Ard Biesheuvel's avatar
    efi: efivars: Fix variable writes without query_variable_store() · 8a254d90
    Ard Biesheuvel authored
    Commit bbc6d2c6 ("efi: vars: Switch to new wrapper layer")
    refactored the efivars layer so that the 'business logic' related to
    which UEFI variables affect the boot flow in which way could be moved
    out of it, and into the efivarfs driver.
    
    This inadvertently broke setting variables on firmware implementations
    that lack the QueryVariableInfo() boot service, because we no longer
    tolerate a EFI_UNSUPPORTED result from check_var_size() when calling
    efivar_entry_set_get_size(), which now ends up calling check_var_size()
    a second time inadvertently.
    
    If QueryVariableInfo() is missing, we support writes of up to 64k -
    let's move that logic into check_var_size(), and drop the redundant
    call.
    
    Cc: <stable@vger.kernel.org> # v6.0
    Fixes: bbc6d2c6 ("efi: vars: Switch to new wrapper layer")
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    8a254d90
vars.c 18.1 KB