if ((ext4_encrypted_inode(dir) ||
             DUMMY_ENCRYPTION_ENABLED(EXT4_SB(dir->i_sb))) &&
-           (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) {
+           (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) &&
+           !(i_flags & EXT4_EA_INODE_FL)) {
                err = fscrypt_get_encryption_info(dir);
                if (err)
                        return ERR_PTR(err);
                err = ext4_init_acl(handle, inode, dir);
                if (err)
                        goto fail_free_drop;
-       }
 
-       err = ext4_init_security(handle, inode, dir, qstr);
-       if (err)
-               goto fail_free_drop;
+               err = ext4_init_security(handle, inode, dir, qstr);
+               if (err)
+                       goto fail_free_drop;
+       }
 
        if (ext4_has_feature_extents(sb)) {
                /* set extent flag only for directory, file and normal symlink*/