|
@@ -2261,12 +2261,15 @@ mountpoint_last(struct nameidata *nd, struct path *path)
|
|
|
dentry = d_alloc(dir, &nd->last);
|
|
|
if (!dentry) {
|
|
|
error = -ENOMEM;
|
|
|
+ mutex_unlock(&dir->d_inode->i_mutex);
|
|
|
goto out;
|
|
|
}
|
|
|
dentry = lookup_real(dir->d_inode, dentry, nd->flags);
|
|
|
error = PTR_ERR(dentry);
|
|
|
- if (IS_ERR(dentry))
|
|
|
+ if (IS_ERR(dentry)) {
|
|
|
+ mutex_unlock(&dir->d_inode->i_mutex);
|
|
|
goto out;
|
|
|
+ }
|
|
|
}
|
|
|
mutex_unlock(&dir->d_inode->i_mutex);
|
|
|
|