• Matt Fleming's avatar
    efivars: efivarfs_valid_name() should handle pstore syntax · 123abd76
    Matt Fleming authored
    Stricter validation was introduced with commit da27a243
    ("efivarfs: guid part of filenames are case-insensitive") and commit
    47f531e8 ("efivarfs: Validate filenames much more aggressively"),
    which is necessary for the guid portion of efivarfs filenames, but we
    don't need to be so strict with the first part, the variable name. The
    UEFI specification doesn't impose any constraints on variable names
    other than they be a NULL-terminated string.
    
    The above commits caused a regression that resulted in users seeing
    the following message,
    
      $ sudo mount -v /sys/firmware/efi/efivars mount: Cannot allocate memory
    
    whenever pstore EFI variables were present in the variable store,
    since their variable names failed to pass the following check,
    
        /* GUID should be right after the first '-' */
        if (s - 1 != strchr(str, '-'))
    
    as a typical pstore filename is of the form, dump-type0-10-1-<guid>.
    The fix is trivial since the guid portion of the filename is GUID_LEN
    bytes, we can use (len - GUID_LEN) to ensure the '-' character is
    where we expect it to be.
    
    (The bogus ENOMEM error value will be fixed in a separate patch.)
    Reported-by: default avatarJoseph Yasi <joe.yasi@gmail.com>
    Tested-by: default avatarJoseph Yasi <joe.yasi@gmail.com>
    Reported-by: default avatarLingzhu Xiang <lxiang@redhat.com>
    Cc: Josh Boyer <jwboyer@redhat.com>
    Cc: Jeremy Kerr <jk@ozlabs.org>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Cc: <stable@vger.kernel.org> # v3.8
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    123abd76
efivarfs.sh 3.27 KB