aboutsummaryrefslogtreecommitdiffstats
path: root/fs/efivarfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/efivarfs/super.c')
-rw-r--r--fs/efivarfs/super.c13
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
183static int efivarfs_destroy(struct efivar_entry *entry, void *data) 185static 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}