Message ID | 20201125002336.274045-3-ebiggers@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Allow deleting files with unsupported encryption policy | expand |
On 2020/11/25 8:23, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > Since encrypted directories can be opened without their encryption key > being available, and each readdir tries to set up the key, trying to set readdir -> readdir/lookup? > up the key in ->open() too isn't really useful. > > Just remove it so that directories don't need an ->open() method > anymore, and so that we eliminate a use of fscrypt_get_encryption_info() > (which I'd like to stop exporting to filesystems). > > Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Chao Yu <yuchao0@huawei.com> Thanks,
On Thu, Nov 26, 2020 at 03:04:55PM +0800, Chao Yu wrote: > On 2020/11/25 8:23, Eric Biggers wrote: > > From: Eric Biggers <ebiggers@google.com> > > > > Since encrypted directories can be opened without their encryption key > > being available, and each readdir tries to set up the key, trying to set > > readdir -> readdir/lookup? Yes, ->lookup() tries to set up the key too. It's different because ->lookup() doesn't require that the directory be open. But I suppose that's another reason why setting up the directory's key in ->open() isn't useful. I'll add something about that. - Eric > > > up the key in ->open() too isn't really useful. > > > > Just remove it so that directories don't need an ->open() method > > anymore, and so that we eliminate a use of fscrypt_get_encryption_info() > > (which I'd like to stop exporting to filesystems). > > > > Signed-off-by: Eric Biggers <ebiggers@google.com> > > Reviewed-by: Chao Yu <yuchao0@huawei.com> > > Thanks,
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 4b9ef8bbfa4a..47bee953fc8d 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -1081,19 +1081,11 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx) return err < 0 ? err : 0; } -static int f2fs_dir_open(struct inode *inode, struct file *filp) -{ - if (IS_ENCRYPTED(inode)) - return fscrypt_get_encryption_info(inode) ? -EACCES : 0; - return 0; -} - const struct file_operations f2fs_dir_operations = { .llseek = generic_file_llseek, .read = generic_read_dir, .iterate_shared = f2fs_readdir, .fsync = f2fs_sync_file, - .open = f2fs_dir_open, .unlocked_ioctl = f2fs_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = f2fs_compat_ioctl,