summaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorGabriel Krisman Bertazi <krisman@suse.de>2024-02-21 12:14:09 -0500
committerGabriel Krisman Bertazi <krisman@suse.de>2024-02-27 16:55:34 -0500
commit04aa5f4eba49d6493801d0f1d515ed237459b166 (patch)
treee382656da351470907f504b0e7319d443fa41b72 /fs/ext4
parent70dfe3f0d239c2e8abc6a7bea24411031f85b652 (diff)
downloadlinux-04aa5f4eba49d6493801d0f1d515ed237459b166.tar.gz
linux-04aa5f4eba49d6493801d0f1d515ed237459b166.tar.bz2
linux-04aa5f4eba49d6493801d0f1d515ed237459b166.zip
ext4: Configure dentry operations at dentry-creation time
This was already the case for case-insensitive before commit bb9cd9106b22 ("fscrypt: Have filesystems handle their d_ops"), but it was changed to set at lookup-time to facilitate the integration with fscrypt. But it's a problem because dentries that don't get created through ->lookup() won't have any visibility of the operations. Since fscrypt now also supports configuring dentry operations at creation-time, do it for any encrypted and/or casefold volume, simplifying the implementation across these features. Acked-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Eric Biggers <ebiggers@google.com> Link: https://lore.kernel.org/r/20240221171412.10710-8-krisman@suse.de Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/namei.c1
-rw-r--r--fs/ext4/super.c1
2 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 05b647e6bc19..5e4f65c14dfb 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1762,7 +1762,6 @@ static struct buffer_head *ext4_lookup_entry(struct inode *dir,
struct buffer_head *bh;
err = ext4_fname_prepare_lookup(dir, dentry, &fname);
- generic_set_encrypted_ci_d_ops(dentry);
if (err == -ENOENT)
return NULL;
if (err)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index dcba0f85dfe2..215b4614eb15 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5484,6 +5484,7 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
goto failed_mount4;
}
+ generic_set_sb_d_ops(sb);
sb->s_root = d_make_root(root);
if (!sb->s_root) {
ext4_msg(sb, KERN_ERR, "get root dentry failed");