]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
convert efivarfs
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 26 Feb 2024 06:27:23 +0000 (01:27 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 16 Nov 2025 06:35:04 +0000 (01:35 -0500)
Initially filesystem is populated with d_alloc_name() + d_add().
That becomes d_alloc_name() + d_make_persistent() + dput().
Dynamic creation is switched to d_make_persistent();
removal - to simple_unlink() (no point open-coding it in
efivarfs_unlink(), better call it there)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/efivarfs/inode.c
fs/efivarfs/super.c

index 2891614abf8d554f563319187b6d54c2bc006a91..95dcad83da11be80ed3a64aebf6de81931597bb2 100644 (file)
@@ -113,8 +113,7 @@ static int efivarfs_create(struct mnt_idmap *idmap, struct inode *dir,
 
        inode->i_private = var;
 
-       d_instantiate(dentry, inode);
-       dget(dentry);
+       d_make_persistent(dentry, inode);
 
        return 0;
 }
@@ -126,9 +125,7 @@ static int efivarfs_unlink(struct inode *dir, struct dentry *dentry)
        if (efivar_entry_delete(var))
                return -EINVAL;
 
-       drop_nlink(d_inode(dentry));
-       dput(dentry);
-       return 0;
+       return simple_unlink(dir, dentry);
 };
 
 const struct inode_operations efivarfs_dir_inode_operations = {
index 1f4d8ce56667006b04a2b6a8df5fc8f0a7604970..298ab3c929eb3da7b0a5ea4a3693f43709d868bc 100644 (file)
@@ -278,7 +278,8 @@ static int efivarfs_create_dentry(struct super_block *sb, efi_char16_t *name16,
        inode->i_private = entry;
        i_size_write(inode, size + sizeof(__u32)); /* attributes + data */
        inode_unlock(inode);
-       d_add(dentry, inode);
+       d_make_persistent(dentry, inode);
+       dput(dentry);
 
        return 0;
 
@@ -522,7 +523,7 @@ static void efivarfs_kill_sb(struct super_block *sb)
        struct efivarfs_fs_info *sfi = sb->s_fs_info;
 
        blocking_notifier_chain_unregister(&efivar_ops_nh, &sfi->nb);
-       kill_litter_super(sb);
+       kill_anon_super(sb);
 
        kfree(sfi);
 }