Change-Id: I6da224be190c29d5315039f921229db92243f306 Signed-off-by: Michael Halcrow <mhalcrow@xxxxxxxxxx> Signed-off-by: Theodore Ts'o <tytso@xxxxxxx> --- fs/ext4/ext4.h | 1 + fs/ext4/ioctl.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index fd2f3dd..2d7fcb6 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -611,6 +611,7 @@ enum { #define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64) #define EXT4_IOC_SWAP_BOOT _IO('f', 17) #define EXT4_IOC_PRECACHE_EXTENTS _IO('f', 18) +#define EXT4_IOC_ENCRYPTION_POLICY _IOW('f', 19, struct ext4_encryption_policy) #if defined(__KERNEL__) && defined(CONFIG_COMPAT) /* diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index f58a0d1..e4ae8f9 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -615,7 +615,26 @@ resizefs_out: } case EXT4_IOC_PRECACHE_EXTENTS: return ext4_ext_precache(inode); + case EXT4_IOC_ENCRYPTION_POLICY: +#ifdef CONFIG_EXT4_FS_ENCRYPTION + { + struct ext4_encryption_policy policy; + int err = 0; + + if (copy_from_user(&policy, + (struct ext4_encryption_policy __user *)arg, + sizeof(policy))) { + err = -EFAULT; + goto encryption_policy_out; + } + err = ext4_process_policy(&policy, inode); +encryption_policy_out: + return err; + } +#else + return -EOPNOTSUPP; +#endif default: return -ENOTTY; } @@ -680,6 +699,7 @@ long ext4_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) case FITRIM: case EXT4_IOC_RESIZE_FS: case EXT4_IOC_PRECACHE_EXTENTS: + case EXT4_IOC_ENCRYPTION_POLICY: break; default: return -ENOIOCTLCMD; -- 2.3.0 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html