diff options
Diffstat (limited to 'fs/efivarfs/super.c')
-rw-r--r-- | fs/efivarfs/super.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c index 688ccc16b702..d7a7c53803c1 100644 --- a/fs/efivarfs/super.c +++ b/fs/efivarfs/super.c | |||
@@ -157,12 +157,14 @@ static int efivarfs_callback(efi_char16_t *name16, efi_guid_t vendor, | |||
157 | goto fail_inode; | 157 | goto fail_inode; |
158 | } | 158 | } |
159 | 159 | ||
160 | efivar_entry_size(entry, &size); | ||
161 | err = efivar_entry_add(entry, &efivarfs_list); | ||
162 | if (err) | ||
163 | goto fail_inode; | ||
164 | |||
160 | /* copied by the above to local storage in the dentry. */ | 165 | /* copied by the above to local storage in the dentry. */ |
161 | kfree(name); | 166 | kfree(name); |
162 | 167 | ||
163 | efivar_entry_size(entry, &size); | ||
164 | efivar_entry_add(entry, &efivarfs_list); | ||
165 | |||
166 | inode_lock(inode); | 168 | inode_lock(inode); |
167 | inode->i_private = entry; | 169 | inode->i_private = entry; |
168 | i_size_write(inode, size + sizeof(entry->var.Attributes)); | 170 | i_size_write(inode, size + sizeof(entry->var.Attributes)); |
@@ -182,7 +184,10 @@ fail: | |||
182 | 184 | ||
183 | static int efivarfs_destroy(struct efivar_entry *entry, void *data) | 185 | static int efivarfs_destroy(struct efivar_entry *entry, void *data) |
184 | { | 186 | { |
185 | efivar_entry_remove(entry); | 187 | int err = efivar_entry_remove(entry); |
188 | |||
189 | if (err) | ||
190 | return err; | ||
186 | kfree(entry); | 191 | kfree(entry); |
187 | return 0; | 192 | return 0; |
188 | } | 193 | } |