summaryrefslogtreecommitdiff
path: root/fs/f2fs/crypto_fname.c
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2016-02-15 12:54:26 +0300
committerJaegeuk Kim <jaegeuk@kernel.org>2016-02-23 03:07:23 +0300
commit922ec355f86365388203672119b5bca346a45085 (patch)
tree5f8f45642a18e05c51da9053fe1f8da2c9d197c0 /fs/f2fs/crypto_fname.c
parentae1086686487f13130937918ca91d920c1daafcb (diff)
downloadlinux-922ec355f86365388203672119b5bca346a45085.tar.xz
f2fs crypto: avoid unneeded memory allocation when {en/de}crypting symlink
This patch adopts f2fs with codes of ext4, it removes unneeded memory allocation in creating/accessing path of symlink. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/crypto_fname.c')
-rw-r--r--fs/f2fs/crypto_fname.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/fs/f2fs/crypto_fname.c b/fs/f2fs/crypto_fname.c
index 73741fb65069..6dfdc978fe45 100644
--- a/fs/f2fs/crypto_fname.c
+++ b/fs/f2fs/crypto_fname.c
@@ -257,6 +257,18 @@ u32 f2fs_fname_crypto_round_up(u32 size, u32 blksize)
return ((size + blksize - 1) / blksize) * blksize;
}
+unsigned f2fs_fname_encrypted_size(struct inode *inode, u32 ilen)
+{
+ struct f2fs_crypt_info *ci = F2FS_I(inode)->i_crypt_info;
+ int padding = 32;
+
+ if (ci)
+ padding = 4 << (ci->ci_flags & F2FS_POLICY_FLAGS_PAD_MASK);
+ if (ilen < F2FS_CRYPTO_BLOCK_SIZE)
+ ilen = F2FS_CRYPTO_BLOCK_SIZE;
+ return f2fs_fname_crypto_round_up(ilen, padding);
+}
+
/**
* f2fs_fname_crypto_alloc_obuff() -
*
@@ -266,15 +278,8 @@ u32 f2fs_fname_crypto_round_up(u32 size, u32 blksize)
int f2fs_fname_crypto_alloc_buffer(struct inode *inode,
u32 ilen, struct f2fs_str *crypto_str)
{
- unsigned int olen;
- int padding = 32;
- struct f2fs_crypt_info *ci = F2FS_I(inode)->i_crypt_info;
+ unsigned int olen = f2fs_fname_encrypted_size(inode, ilen);
- if (ci)
- padding = 4 << (ci->ci_flags & F2FS_POLICY_FLAGS_PAD_MASK);
- if (ilen < F2FS_CRYPTO_BLOCK_SIZE)
- ilen = F2FS_CRYPTO_BLOCK_SIZE;
- olen = f2fs_fname_crypto_round_up(ilen, padding);
crypto_str->len = olen;
if (olen < F2FS_FNAME_CRYPTO_DIGEST_SIZE * 2)
olen = F2FS_FNAME_CRYPTO_DIGEST_SIZE * 2;