Lines Matching +full:entry +full:- +full:name
1 // SPDX-License-Identifier: GPL-2.0-only
52 buf->f_bsize = 1; in efivarfs_statfs()
53 buf->f_namelen = NAME_MAX; in efivarfs_statfs()
54 buf->f_blocks = storage_space; in efivarfs_statfs()
55 buf->f_bfree = remaining_space; in efivarfs_statfs()
56 buf->f_type = dentry->d_sb->s_magic; in efivarfs_statfs()
64 buf->f_bavail = remaining_space - efivar_reserved_space(); in efivarfs_statfs()
66 buf->f_bavail = 0; in efivarfs_statfs()
81 * 1. A case-sensitive variable name
82 * 2. A case-insensitive GUID
84 * So we need to perform a case-sensitive match on part 1 and a
85 * case-insensitive match on part 2.
89 const struct qstr *name) in efivarfs_d_compare() argument
91 int guid = len - EFI_VARIABLE_GUID_LEN; in efivarfs_d_compare()
93 if (name->len != len) in efivarfs_d_compare()
96 /* Case-sensitive compare for the variable name */ in efivarfs_d_compare()
97 if (memcmp(str, name->name, guid)) in efivarfs_d_compare()
100 /* Case-insensitive compare for the GUID */ in efivarfs_d_compare()
101 return strncasecmp(name->name + guid, str + guid, EFI_VARIABLE_GUID_LEN); in efivarfs_d_compare()
107 const unsigned char *s = qstr->name; in efivarfs_d_hash()
108 unsigned int len = qstr->len; in efivarfs_d_hash()
110 while (len-- > EFI_VARIABLE_GUID_LEN) in efivarfs_d_hash()
113 /* GUID is case-insensitive. */ in efivarfs_d_hash()
114 while (len--) in efivarfs_d_hash()
117 qstr->hash = end_name_hash(hash); in efivarfs_d_hash()
127 static struct dentry *efivarfs_alloc_dentry(struct dentry *parent, char *name) in efivarfs_alloc_dentry() argument
133 q.name = name; in efivarfs_alloc_dentry()
134 q.len = strlen(name); in efivarfs_alloc_dentry()
144 return ERR_PTR(-ENOMEM); in efivarfs_alloc_dentry()
151 struct efivar_entry *entry; in efivarfs_callback() local
153 struct dentry *dentry, *root = sb->s_root; in efivarfs_callback()
155 char *name; in efivarfs_callback() local
157 int err = -ENOMEM; in efivarfs_callback()
163 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in efivarfs_callback()
164 if (!entry) in efivarfs_callback()
167 memcpy(entry->var.VariableName, name16, name_size); in efivarfs_callback()
168 memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t)); in efivarfs_callback()
170 len = ucs2_utf8size(entry->var.VariableName); in efivarfs_callback()
172 /* name, plus '-', plus GUID, plus NUL*/ in efivarfs_callback()
173 name = kmalloc(len + 1 + EFI_VARIABLE_GUID_LEN + 1, GFP_KERNEL); in efivarfs_callback()
174 if (!name) in efivarfs_callback()
177 ucs2_as_utf8(name, entry->var.VariableName, len); in efivarfs_callback()
179 if (efivar_variable_is_removable(entry->var.VendorGuid, name, len)) in efivarfs_callback()
182 name[len] = '-'; in efivarfs_callback()
184 efi_guid_to_str(&entry->var.VendorGuid, name + len + 1); in efivarfs_callback()
186 name[len + EFI_VARIABLE_GUID_LEN+1] = '\0'; in efivarfs_callback()
189 strreplace(name, '/', '!'); in efivarfs_callback()
196 dentry = efivarfs_alloc_dentry(root, name); in efivarfs_callback()
202 __efivar_entry_get(entry, NULL, &size, NULL); in efivarfs_callback()
203 __efivar_entry_add(entry, &efivarfs_list); in efivarfs_callback()
206 kfree(name); in efivarfs_callback()
209 inode->i_private = entry; in efivarfs_callback()
210 i_size_write(inode, size + sizeof(entry->var.Attributes)); in efivarfs_callback()
219 kfree(name); in efivarfs_callback()
221 kfree(entry); in efivarfs_callback()
225 static int efivarfs_destroy(struct efivar_entry *entry, void *data) in efivarfs_destroy() argument
227 efivar_entry_remove(entry); in efivarfs_destroy()
228 kfree(entry); in efivarfs_destroy()
239 return -EOPNOTSUPP; in efivarfs_fill_super()
241 sb->s_maxbytes = MAX_LFS_FILESIZE; in efivarfs_fill_super()
242 sb->s_blocksize = PAGE_SIZE; in efivarfs_fill_super()
243 sb->s_blocksize_bits = PAGE_SHIFT; in efivarfs_fill_super()
244 sb->s_magic = EFIVARFS_MAGIC; in efivarfs_fill_super()
245 sb->s_op = &efivarfs_ops; in efivarfs_fill_super()
246 sb->s_d_op = &efivarfs_d_ops; in efivarfs_fill_super()
247 sb->s_time_gran = 1; in efivarfs_fill_super()
250 sb->s_flags |= SB_RDONLY; in efivarfs_fill_super()
254 return -ENOMEM; in efivarfs_fill_super()
255 inode->i_op = &efivarfs_dir_inode_operations; in efivarfs_fill_super()
258 sb->s_root = root; in efivarfs_fill_super()
260 return -ENOMEM; in efivarfs_fill_super()
278 if (!efivar_supports_writes() && !(fc->sb_flags & SB_RDONLY)) { in efivarfs_reconfigure()
280 return -EINVAL; in efivarfs_reconfigure()
293 fc->ops = &efivarfs_context_ops; in efivarfs_init_fs_context()
299 struct efivarfs_fs_info *sfi = sb->s_fs_info; in efivarfs_kill_sb()
313 .name = "efivarfs",