[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)
committerhskang <hs1218.kang@samsung.com>
Thu, 22 Nov 2018 11:26:59 +0000 (20:26 +0900)
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 9d2873ad6ce3833b110043413bea0c508de4a186..84b2e14243cc6c759711a3888e251610b5bb9119 100644 (file)
@@ -129,7 +129,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 794a28381b8087bfb23c5e408b767c68d855d64b..4a7920be7449726fdcc26bf00f12baad1e91df51 100644 (file)
@@ -346,7 +346,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 4b5610f88024edef1c82008cd55e31601d92ef0d..cac8580510ed89bc4957878604ff5ad7c4f7b9ff 100644 (file)
@@ -449,7 +449,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 295dab557e588df01f46887bdb49fc077a2b8f29..c0a350ec65c2158287d070d5f2b8599fa3d2f701 100644 (file)
@@ -3833,9 +3833,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 7bae3b9fbc6c933a54b96780791e7fa946ce2e96..7983547c97e7d7b7b1d209d408e45c5b12090d34 100644 (file)
@@ -216,7 +216,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)