|
@@ -1618,13 +1618,15 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, unsi
|
|
|
!fscrypt_has_permitted_context(dir, inode)) {
|
|
|
int nokey = ext4_encrypted_inode(inode) &&
|
|
|
!fscrypt_has_encryption_key(inode);
|
|
|
- iput(inode);
|
|
|
- if (nokey)
|
|
|
+ if (nokey) {
|
|
|
+ iput(inode);
|
|
|
return ERR_PTR(-ENOKEY);
|
|
|
+ }
|
|
|
ext4_warning(inode->i_sb,
|
|
|
"Inconsistent encryption contexts: %lu/%lu",
|
|
|
(unsigned long) dir->i_ino,
|
|
|
(unsigned long) inode->i_ino);
|
|
|
+ iput(inode);
|
|
|
return ERR_PTR(-EPERM);
|
|
|
}
|
|
|
}
|