diff options
author | Chao Yu <chao2.yu@samsung.com> | 2016-02-15 12:54:26 +0300 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-02-23 03:07:23 +0300 |
commit | 922ec355f86365388203672119b5bca346a45085 (patch) | |
tree | 5f8f45642a18e05c51da9053fe1f8da2c9d197c0 /fs/f2fs/crypto_fname.c | |
parent | ae1086686487f13130937918ca91d920c1daafcb (diff) | |
download | linux-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.c | 21 |
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; |