From: NeilBrown <[email protected]>

efivarfs() is one of the few remaining users of d_alloc().
Other similar filesystems use d_alloc_name() in the same circumstances.
Now that d_alloc_name() supports ->d_hash (providing that it never
fails), change efivarfs to use that.

Signed-off-by: NeilBrown <[email protected]>
---
 fs/efivarfs/super.c | 26 +++-----------------------
 1 file changed, 3 insertions(+), 23 deletions(-)

diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index 1c5224cf183e..232d9757804c 100644
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -189,26 +189,6 @@ static const struct dentry_operations efivarfs_d_ops = {
        .d_hash = efivarfs_d_hash,
 };
 
-static struct dentry *efivarfs_alloc_dentry(struct dentry *parent, char *name)
-{
-       struct dentry *d;
-       struct qstr q;
-       int err;
-
-       q.name = name;
-       q.len = strlen(name);
-
-       err = efivarfs_d_hash(parent, &q);
-       if (err)
-               return ERR_PTR(err);
-
-       d = d_alloc(parent, &q);
-       if (d)
-               return d;
-
-       return ERR_PTR(-ENOMEM);
-}
-
 bool efivarfs_variable_is_present(efi_char16_t *variable_name,
                                  efi_guid_t *vendor, void *data)
 {
@@ -263,9 +243,9 @@ static int efivarfs_create_dentry(struct super_block *sb, 
efi_char16_t *name16,
        memcpy(entry->var.VariableName, name16, name_size);
        memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t));
 
-       dentry = efivarfs_alloc_dentry(root, name);
-       if (IS_ERR(dentry)) {
-               err = PTR_ERR(dentry);
+       dentry = d_alloc_name(root, name);
+       if (!dentry) {
+               err = -ENOMEM;
                goto fail_inode;
        }
 
-- 
2.50.0.107.gf914562f5916.dirty


Reply via email to