Lines Matching +full:entry +full:- +full:name
41 * 1. A case-sensitive variable name
42 * 2. A case-insensitive GUID
44 * So we need to perform a case-sensitive match on part 1 and a
45 * case-insensitive match on part 2.
49 const struct qstr *name) in efivarfs_d_compare() argument
51 int guid = len - EFI_VARIABLE_GUID_LEN; in efivarfs_d_compare()
53 if (name->len != len) in efivarfs_d_compare()
56 /* Case-sensitive compare for the variable name */ in efivarfs_d_compare()
57 if (memcmp(str, name->name, guid)) in efivarfs_d_compare()
60 /* Case-insensitive compare for the GUID */ in efivarfs_d_compare()
61 return strncasecmp(name->name + guid, str + guid, EFI_VARIABLE_GUID_LEN); in efivarfs_d_compare()
67 const unsigned char *s = qstr->name; in efivarfs_d_hash()
68 unsigned int len = qstr->len; in efivarfs_d_hash()
71 return -EINVAL; in efivarfs_d_hash()
73 while (len-- > EFI_VARIABLE_GUID_LEN) in efivarfs_d_hash()
76 /* GUID is case-insensitive. */ in efivarfs_d_hash()
77 while (len--) in efivarfs_d_hash()
80 qstr->hash = end_name_hash(hash); in efivarfs_d_hash()
90 static struct dentry *efivarfs_alloc_dentry(struct dentry *parent, char *name) in efivarfs_alloc_dentry() argument
96 q.name = name; in efivarfs_alloc_dentry()
97 q.len = strlen(name); in efivarfs_alloc_dentry()
107 return ERR_PTR(-ENOMEM); in efivarfs_alloc_dentry()
114 struct efivar_entry *entry; in efivarfs_callback() local
116 struct dentry *dentry, *root = sb->s_root; in efivarfs_callback()
118 char *name; in efivarfs_callback() local
120 int err = -ENOMEM; in efivarfs_callback()
123 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in efivarfs_callback()
124 if (!entry) in efivarfs_callback()
127 memcpy(entry->var.VariableName, name16, name_size); in efivarfs_callback()
128 memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t)); in efivarfs_callback()
130 len = ucs2_utf8size(entry->var.VariableName); in efivarfs_callback()
132 /* name, plus '-', plus GUID, plus NUL*/ in efivarfs_callback()
133 name = kmalloc(len + 1 + EFI_VARIABLE_GUID_LEN + 1, GFP_KERNEL); in efivarfs_callback()
134 if (!name) in efivarfs_callback()
137 ucs2_as_utf8(name, entry->var.VariableName, len); in efivarfs_callback()
139 if (efivar_variable_is_removable(entry->var.VendorGuid, name, len)) in efivarfs_callback()
142 name[len] = '-'; in efivarfs_callback()
144 efi_guid_to_str(&entry->var.VendorGuid, name + len + 1); in efivarfs_callback()
146 name[len + EFI_VARIABLE_GUID_LEN+1] = '\0'; in efivarfs_callback()
149 strreplace(name, '/', '!'); in efivarfs_callback()
156 dentry = efivarfs_alloc_dentry(root, name); in efivarfs_callback()
162 efivar_entry_size(entry, &size); in efivarfs_callback()
163 err = efivar_entry_add(entry, &efivarfs_list); in efivarfs_callback()
168 kfree(name); in efivarfs_callback()
171 inode->i_private = entry; in efivarfs_callback()
172 i_size_write(inode, size + sizeof(entry->var.Attributes)); in efivarfs_callback()
181 kfree(name); in efivarfs_callback()
183 kfree(entry); in efivarfs_callback()
187 static int efivarfs_destroy(struct efivar_entry *entry, void *data) in efivarfs_destroy() argument
189 int err = efivar_entry_remove(entry); in efivarfs_destroy()
193 kfree(entry); in efivarfs_destroy()
205 sb->s_maxbytes = MAX_LFS_FILESIZE; in efivarfs_fill_super()
206 sb->s_blocksize = PAGE_SIZE; in efivarfs_fill_super()
207 sb->s_blocksize_bits = PAGE_SHIFT; in efivarfs_fill_super()
208 sb->s_magic = EFIVARFS_MAGIC; in efivarfs_fill_super()
209 sb->s_op = &efivarfs_ops; in efivarfs_fill_super()
210 sb->s_d_op = &efivarfs_d_ops; in efivarfs_fill_super()
211 sb->s_time_gran = 1; in efivarfs_fill_super()
215 return -ENOMEM; in efivarfs_fill_super()
216 inode->i_op = &efivarfs_dir_inode_operations; in efivarfs_fill_super()
219 sb->s_root = root; in efivarfs_fill_super()
221 return -ENOMEM; in efivarfs_fill_super()
249 .name = "efivarfs",
257 return -ENODEV; in efivarfs_init()
260 return -ENODEV; in efivarfs_init()