[PATCH] f2fs: do not set encryption policy for non-directory by ioctl

From: Chao Yu
Date: Wed May 27 2015 - 02:51:52 EST


Encryption policy should only be set to an empty directory through ioctl,
This patch add a judgement condition to verify type of the target inode
to avoid incorrectly configuring for non-directory.

Additionally, remove unneeded inline data conversion since regular or symlink
file should not be processed here.

Signed-off-by: Chao Yu <chao2.yu@xxxxxxxxxxx>
---
fs/f2fs/crypto_policy.c | 3 +++
fs/f2fs/file.c | 6 ------
2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/fs/f2fs/crypto_policy.c b/fs/f2fs/crypto_policy.c
index 30b0b73..d4a96af 100644
--- a/fs/f2fs/crypto_policy.c
+++ b/fs/f2fs/crypto_policy.c
@@ -92,6 +92,9 @@ int f2fs_process_policy(const struct f2fs_encryption_policy *policy,
if (policy->version != 0)
return -EINVAL;

+ if (!S_ISDIR(inode->i_mode))
+ return -EINVAL;
+
if (!f2fs_inode_has_encryption_context(inode)) {
if (!f2fs_empty_dir(inode))
return -ENOTEMPTY;
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index af5ef5f..4d42d66 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1485,12 +1485,6 @@ static int f2fs_ioc_set_encryption_policy(struct file *filp, unsigned long arg)
sizeof(policy)))
return -EFAULT;

- if (f2fs_has_inline_data(inode)) {
- int ret = f2fs_convert_inline_inode(inode);
- if (ret)
- return ret;
- }
-
return f2fs_process_policy(&policy, inode);
#else
return -EOPNOTSUPP;
--
2.3.3


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/