[RAMEN9610-8702][COMMON] fs: support f2fs fmp encryption
authorBoojin Kim <boojin.kim@samsung.com>
Thu, 25 Oct 2018 03:20:31 +0000 (12:20 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:23:07 +0000 (20:23 +0300)
Change-Id: I6145a8b5062b887daeb06530acfbe14e9ee20e4e
Signed-off-by: Boojin Kim <boojin.kim@samsung.com>
fs/crypto/fscrypt_private.h
fs/crypto/keyinfo.c
fs/direct-io.c
fs/ext4/inode.c
include/linux/fscrypt_notsupp.h

index 0b33f3248903515221aba1bea8c034ee05aceed1..42c0b210c28d60c730984be8817b17f996f51fc6 100644 (file)
@@ -127,7 +127,7 @@ static inline int __fscrypt_disk_encrypted(const struct inode *inode)
 #if IS_ENABLED(CONFIG_FS_ENCRYPTION)
 #if IS_ENABLED(CONFIG_CRYPTO_DISKCIPHER)
        if (inode && inode->i_crypt_info)
-               return (inode->i_crypt_info->ci_dtfm != NULL);
+               return S_ISREG(inode->i_mode) && (inode->i_crypt_info->ci_dtfm != NULL);
 #endif
 #endif
        return 0;
index 1de64a61df2502f1631ec619a0ff13dda8eb0b0f..07af20f50f79507d382cc8dd9c10e262c0b80b5f 100644 (file)
@@ -334,7 +334,7 @@ int fscrypt_get_encryption_info(struct inode *inode)
                        }
                }
                /* clear diskcipher. use skcipher */
-               pr_warn("%s: (inode %lu) fails to get diskcipher (%s, %d)\n",
+               pr_debug("%s: (inode %lu) fails to get diskcipher (%s, %d)\n",
                         __func__, inode->i_ino, cipher_str, res);
                crypt_info->ci_dtfm = NULL;
        }
index b71d927b9a07e75e34839be73f31b09763859700..9ddd22c3a5eb3ae5950728571054afdeafea4760 100644 (file)
@@ -471,7 +471,7 @@ static inline void dio_bio_submit(struct dio *dio, struct dio_submit *sdio)
        dio->refcount++;
        spin_unlock_irqrestore(&dio->bio_lock, flags);
 
-#if defined(CONFIG_EXT4_FS_ENCRYPTION) && defined(CONFIG_CRYPTO_DISKCIPHER)
+#if defined(CONFIG_CRYPTO_DISKCIPHER)
        if (dio->inode && fscrypt_has_encryption_key(dio->inode)) {
                fscrypt_set_bio(dio->inode, bio);
                crypto_diskcipher_debug(FS_DIO, bio->bi_opf);
index 086dd720d21170311520d82ca0b6cb6c188727c7..64b296ede62be12111ef4e9c01da1818f17e2572 100644 (file)
@@ -3904,9 +3904,11 @@ static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
        ssize_t ret;
        int rw = iov_iter_rw(iter);
 
+#ifdef CONFIG_EXT4_FS_ENCRYPTION /* encrypt uses buffered-io for encryption, but, disk-encrypt can use direct-io */
        if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode)
                        && !fscrypt_disk_encrypted(inode))
                return 0;
+#endif
        /*
         * If we are doing data journalling we don't support O_DIRECT
         */
index 9c812ddd137f00d1047798ce19949e471d0d50ec..cd4ab6e6ed4e3a02c325d2801812ea42eb4c31f9 100644 (file)
@@ -206,7 +206,7 @@ static inline int __fscrypt_prepare_lookup(struct inode *dir,
 
 static inline int fscrypt_disk_encrypted(const struct inode *inode)
 {
-       return;
+       return 0;
 }
 
 static inline void fscrypt_set_bio(const struct inode *inode, struct bio *bio)