}
        case EXT4_IOC_PRECACHE_EXTENTS:
                return ext4_ext_precache(inode);
-       case EXT4_IOC_SET_ENCRYPTION_POLICY: {
- #ifdef CONFIG_EXT4_FS_ENCRYPTION
-               struct fscrypt_policy policy;
  
+       case EXT4_IOC_SET_ENCRYPTION_POLICY:
                if (!ext4_has_feature_encrypt(sb))
                        return -EOPNOTSUPP;
+               return fscrypt_ioctl_set_policy(filp, (const void __user *)arg);
  
-               if (copy_from_user(&policy,
-                                  (struct fscrypt_policy __user *)arg,
-                                  sizeof(policy)))
-                       return -EFAULT;
-               return fscrypt_process_policy(filp, &policy);
- #else
-               return -EOPNOTSUPP;
- #endif
-       }
        case EXT4_IOC_GET_ENCRYPTION_PWSALT: {
 +#ifdef CONFIG_EXT4_FS_ENCRYPTION
                int err, err2;
                struct ext4_sb_info *sbi = EXT4_SB(sb);
                handle_t *handle;
                                 sbi->s_es->s_encrypt_pw_salt, 16))
                        return -EFAULT;
                return 0;
 +#else
 +              return -EOPNOTSUPP;
 +#endif
        }
-       case EXT4_IOC_GET_ENCRYPTION_POLICY: {
- #ifdef CONFIG_EXT4_FS_ENCRYPTION
-               struct fscrypt_policy policy;
-               int err = 0;
+       case EXT4_IOC_GET_ENCRYPTION_POLICY:
+               return fscrypt_ioctl_get_policy(filp, (void __user *)arg);
  
-               if (!ext4_encrypted_inode(inode))
-                       return -ENOENT;
-               err = fscrypt_get_policy(inode, &policy);
-               if (err)
-                       return err;
-               if (copy_to_user((void __user *)arg, &policy, sizeof(policy)))
-                       return -EFAULT;
-               return 0;
- #else
-               return -EOPNOTSUPP;
- #endif
-       }
        case EXT4_IOC_FSGETXATTR:
        {
                struct fsxattr fa;