diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index ca41b2a77849..8f09da0552ac 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -902,11 +902,19 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx) return err; } +static int f2fs_dir_open(struct inode *inode, struct file *filp) +{ + if (f2fs_encrypted_inode(inode)) + return f2fs_get_encryption_info(inode) ? -EACCES : 0; + return 0; +} + const struct file_operations f2fs_dir_operations = { .llseek = generic_file_llseek, .read = generic_read_dir, .iterate = f2fs_readdir, .fsync = f2fs_sync_file, + .open = f2fs_dir_open, .unlocked_ioctl = f2fs_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = f2fs_compat_ioctl,