Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <ebiggers@google.com>
Signed-off-by: Ritesh Harjani <ritesh.list@gmail.com>
Link: https://lore.kernel.org/r/b7b9de2c7226298663fb5a0c28909135e2ab220f.1652595565.git.ritesh.list@gmail.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>

authored by

Ritesh Harjani and committed by
Theodore Ts'o
3030b59c b1241c8e

+70 -64
+65
fs/ext4/crypto.c
··· 6 6 #include "xattr.h" 7 7 #include "ext4_jbd2.h" 8 8 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 + 9 74 static int ext4_get_context(struct inode *inode, void *ctx, size_t len) 10 75 { 11 76 return ext4_xattr_get(inode, EXT4_XATTR_INDEX_ENCRYPTION,
+5 -64
fs/ext4/ext4.h
··· 2737 2737 #ifdef CONFIG_FS_ENCRYPTION 2738 2738 extern const struct fscrypt_operations ext4_cryptops; 2739 2739 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)); 2740 + int ext4_fname_setup_filename(struct inode *dir, const struct qstr *iname, 2741 + int lookup, struct ext4_filename *fname); 2744 2742 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 - } 2743 + int ext4_fname_prepare_lookup(struct inode *dir, struct dentry *dentry, 2744 + struct ext4_filename *fname); 2751 2745 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; 2746 + void ext4_fname_free_filename(struct ext4_filename *fname); 2759 2747 2760 - err = fscrypt_setup_filename(dir, iname, lookup, &name); 2761 - if (err) 2762 - return err; 2763 - 2764 - ext4_fname_from_fscrypt_name(fname, &name); 2765 - 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 - } 2807 2748 #else /* !CONFIG_FS_ENCRYPTION */ 2808 2749 static inline int ext4_fname_setup_filename(struct inode *dir, 2809 2750 const struct qstr *iname,