Skip to content

Commit 3030b59

Browse files
riteshharjanitytso
authored andcommitted
ext4: cleanup function defs from ext4.h into crypto.c
Some of these functions when CONFIG_FS_ENCRYPTION is enabled are not really inline (let compiler be the best judge of it). Remove inline and move them into crypto.c where they should be present. Reviewed-by: Eric Biggers <[email protected]> Signed-off-by: Ritesh Harjani <[email protected]> Link: https://lore.kernel.org/r/b7b9de2c7226298663fb5a0c28909135e2ab220f.1652595565.git.ritesh.list@gmail.com Signed-off-by: Theodore Ts'o <[email protected]>
1 parent b1241c8 commit 3030b59

File tree

2 files changed

+70
-64
lines changed

2 files changed

+70
-64
lines changed

fs/ext4/crypto.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,71 @@
66
#include "xattr.h"
77
#include "ext4_jbd2.h"
88

9+
static void ext4_fname_from_fscrypt_name(struct ext4_filename *dst,
10+
const struct fscrypt_name *src)
11+
{
12+
memset(dst, 0, sizeof(*dst));
13+
14+
dst->usr_fname = src->usr_fname;
15+
dst->disk_name = src->disk_name;
16+
dst->hinfo.hash = src->hash;
17+
dst->hinfo.minor_hash = src->minor_hash;
18+
dst->crypto_buf = src->crypto_buf;
19+
}
20+
21+
int ext4_fname_setup_filename(struct inode *dir, const struct qstr *iname,
22+
int lookup, struct ext4_filename *fname)
23+
{
24+
struct fscrypt_name name;
25+
int err;
26+
27+
err = fscrypt_setup_filename(dir, iname, lookup, &name);
28+
if (err)
29+
return err;
30+
31+
ext4_fname_from_fscrypt_name(fname, &name);
32+
33+
#if IS_ENABLED(CONFIG_UNICODE)
34+
err = ext4_fname_setup_ci_filename(dir, iname, fname);
35+
#endif
36+
return err;
37+
}
38+
39+
int ext4_fname_prepare_lookup(struct inode *dir, struct dentry *dentry,
40+
struct ext4_filename *fname)
41+
{
42+
struct fscrypt_name name;
43+
int err;
44+
45+
err = fscrypt_prepare_lookup(dir, dentry, &name);
46+
if (err)
47+
return err;
48+
49+
ext4_fname_from_fscrypt_name(fname, &name);
50+
51+
#if IS_ENABLED(CONFIG_UNICODE)
52+
err = ext4_fname_setup_ci_filename(dir, &dentry->d_name, fname);
53+
#endif
54+
return err;
55+
}
56+
57+
void ext4_fname_free_filename(struct ext4_filename *fname)
58+
{
59+
struct fscrypt_name name;
60+
61+
name.crypto_buf = fname->crypto_buf;
62+
fscrypt_free_filename(&name);
63+
64+
fname->crypto_buf.name = NULL;
65+
fname->usr_fname = NULL;
66+
fname->disk_name.name = NULL;
67+
68+
#if IS_ENABLED(CONFIG_UNICODE)
69+
kfree(fname->cf_name.name);
70+
fname->cf_name.name = NULL;
71+
#endif
72+
}
73+
974
static int ext4_get_context(struct inode *inode, void *ctx, size_t len)
1075
{
1176
return ext4_xattr_get(inode, EXT4_XATTR_INDEX_ENCRYPTION,

fs/ext4/ext4.h

Lines changed: 5 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2737,73 +2737,14 @@ extern int ext4_fname_setup_ci_filename(struct inode *dir,
27372737
#ifdef CONFIG_FS_ENCRYPTION
27382738
extern const struct fscrypt_operations ext4_cryptops;
27392739

2740-
static inline void ext4_fname_from_fscrypt_name(struct ext4_filename *dst,
2741-
const struct fscrypt_name *src)
2742-
{
2743-
memset(dst, 0, sizeof(*dst));
2744-
2745-
dst->usr_fname = src->usr_fname;
2746-
dst->disk_name = src->disk_name;
2747-
dst->hinfo.hash = src->hash;
2748-
dst->hinfo.minor_hash = src->minor_hash;
2749-
dst->crypto_buf = src->crypto_buf;
2750-
}
2751-
2752-
static inline int ext4_fname_setup_filename(struct inode *dir,
2753-
const struct qstr *iname,
2754-
int lookup,
2755-
struct ext4_filename *fname)
2756-
{
2757-
struct fscrypt_name name;
2758-
int err;
2740+
int ext4_fname_setup_filename(struct inode *dir, const struct qstr *iname,
2741+
int lookup, struct ext4_filename *fname);
27592742

2760-
err = fscrypt_setup_filename(dir, iname, lookup, &name);
2761-
if (err)
2762-
return err;
2743+
int ext4_fname_prepare_lookup(struct inode *dir, struct dentry *dentry,
2744+
struct ext4_filename *fname);
27632745

2764-
ext4_fname_from_fscrypt_name(fname, &name);
2746+
void ext4_fname_free_filename(struct ext4_filename *fname);
27652747

2766-
#if IS_ENABLED(CONFIG_UNICODE)
2767-
err = ext4_fname_setup_ci_filename(dir, iname, fname);
2768-
#endif
2769-
return err;
2770-
}
2771-
2772-
static inline int ext4_fname_prepare_lookup(struct inode *dir,
2773-
struct dentry *dentry,
2774-
struct ext4_filename *fname)
2775-
{
2776-
struct fscrypt_name name;
2777-
int err;
2778-
2779-
err = fscrypt_prepare_lookup(dir, dentry, &name);
2780-
if (err)
2781-
return err;
2782-
2783-
ext4_fname_from_fscrypt_name(fname, &name);
2784-
2785-
#if IS_ENABLED(CONFIG_UNICODE)
2786-
err = ext4_fname_setup_ci_filename(dir, &dentry->d_name, fname);
2787-
#endif
2788-
return err;
2789-
}
2790-
2791-
static inline void ext4_fname_free_filename(struct ext4_filename *fname)
2792-
{
2793-
struct fscrypt_name name;
2794-
2795-
name.crypto_buf = fname->crypto_buf;
2796-
fscrypt_free_filename(&name);
2797-
2798-
fname->crypto_buf.name = NULL;
2799-
fname->usr_fname = NULL;
2800-
fname->disk_name.name = NULL;
2801-
2802-
#if IS_ENABLED(CONFIG_UNICODE)
2803-
kfree(fname->cf_name.name);
2804-
fname->cf_name.name = NULL;
2805-
#endif
2806-
}
28072748
#else /* !CONFIG_FS_ENCRYPTION */
28082749
static inline int ext4_fname_setup_filename(struct inode *dir,
28092750
const struct qstr *iname,

0 commit comments

Comments
 (0)