efivarfs: guid part of filenames are case-insensitive
authorMatt Fleming <matt.fleming@intel.com>
Fri, 1 Feb 2013 11:02:28 +0000 (11:02 +0000)
committerMatt Fleming <matt.fleming@intel.com>
Tue, 12 Feb 2013 12:41:54 +0000 (12:41 +0000)
commitda27a24383b2b10bf6ebd0db29b325548aafecb4
treedb48f001f62af527e832fe2c1cd302b30e794b6a
parent47f531e8ba3bc3901a0c493f4252826c41dea1a1
efivarfs: guid part of filenames are case-insensitive

It makes no sense to treat the following filenames as unique,

VarName-abcdefab-abcd-abcd-abcd-abcdefabcdef
VarName-ABCDEFAB-ABCD-ABCD-ABCD-ABCDEFABCDEF
VarName-ABcDEfAB-ABcD-ABcD-ABcD-ABcDEfABcDEf
VarName-aBcDEfAB-aBcD-aBcD-aBcD-aBcDEfaBcDEf
... etc ...

since the guid will be converted into a binary representation, which
has no case.

Roll our own dentry operations so that we can treat the variable name
part of filenames ("VarName" in the above example) as case-sensitive,
but the guid portion as case-insensitive. That way, efivarfs will
refuse to create the above files if any one already exists.

Reported-by: Lingzhu Xiang <lxiang@redhat.com>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
drivers/firmware/efivars.c