Commit ba679017 authored by Eric Biggers's avatar Eric Biggers Committed by Theodore Ts'o

ext4: disable pwsalt ioctl when encryption disabled by config

On a CONFIG_EXT4_FS_ENCRYPTION=n kernel, the ioctls to get and set
encryption policies were disabled but EXT4_IOC_GET_ENCRYPTION_PWSALT was
not.  But there's no good reason to expose the pwsalt ioctl if the
kernel doesn't support encryption.  The pwsalt ioctl was also disabled
pre-4.8 (via ext4_sb_has_crypto() previously returning 0 when encryption
was disabled by config) and seems to have been enabled by mistake when
ext4 encryption was refactored to use fs/crypto/.  So let's disable it
again.
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent 35997d1c
...@@ -191,6 +191,7 @@ static long swap_inode_boot_loader(struct super_block *sb, ...@@ -191,6 +191,7 @@ static long swap_inode_boot_loader(struct super_block *sb,
return err; return err;
} }
#ifdef CONFIG_EXT4_FS_ENCRYPTION
static int uuid_is_zero(__u8 u[16]) static int uuid_is_zero(__u8 u[16])
{ {
int i; int i;
...@@ -200,6 +201,7 @@ static int uuid_is_zero(__u8 u[16]) ...@@ -200,6 +201,7 @@ static int uuid_is_zero(__u8 u[16])
return 0; return 0;
return 1; return 1;
} }
#endif
static int ext4_ioctl_setflags(struct inode *inode, static int ext4_ioctl_setflags(struct inode *inode,
unsigned int flags) unsigned int flags)
...@@ -802,6 +804,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -802,6 +804,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
#endif #endif
} }
case EXT4_IOC_GET_ENCRYPTION_PWSALT: { case EXT4_IOC_GET_ENCRYPTION_PWSALT: {
#ifdef CONFIG_EXT4_FS_ENCRYPTION
int err, err2; int err, err2;
struct ext4_sb_info *sbi = EXT4_SB(sb); struct ext4_sb_info *sbi = EXT4_SB(sb);
handle_t *handle; handle_t *handle;
...@@ -836,6 +839,9 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -836,6 +839,9 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
sbi->s_es->s_encrypt_pw_salt, 16)) sbi->s_es->s_encrypt_pw_salt, 16))
return -EFAULT; return -EFAULT;
return 0; return 0;
#else
return -EOPNOTSUPP;
#endif
} }
case EXT4_IOC_GET_ENCRYPTION_POLICY: { case EXT4_IOC_GET_ENCRYPTION_POLICY: {
#ifdef CONFIG_EXT4_FS_ENCRYPTION #ifdef CONFIG_EXT4_FS_ENCRYPTION
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment