ecryptfs: release reference to lower mount if interpose fails
In ecryptfs_lookup_and_interpose_lower() the lower mount is not decremented if allocation of a dentry info struct failed. As a result the lower filesystem cant be unmounted any more (since it is considered busy). This patch corrects the reference counting. Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de> Cc: stable@kernel.org Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
This commit is contained in:
parent
c43f7b8fb0
commit
31f73bee3e
|
@ -264,7 +264,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
|
|||
printk(KERN_ERR "%s: Out of memory whilst attempting "
|
||||
"to allocate ecryptfs_dentry_info struct\n",
|
||||
__func__);
|
||||
goto out_dput;
|
||||
goto out_put;
|
||||
}
|
||||
ecryptfs_set_dentry_lower(ecryptfs_dentry, lower_dentry);
|
||||
ecryptfs_set_dentry_lower_mnt(ecryptfs_dentry, lower_mnt);
|
||||
|
@ -339,8 +339,9 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
|
|||
out_free_kmem:
|
||||
kmem_cache_free(ecryptfs_header_cache_2, page_virt);
|
||||
goto out;
|
||||
out_dput:
|
||||
out_put:
|
||||
dput(lower_dentry);
|
||||
mntput(lower_mnt);
|
||||
d_drop(ecryptfs_dentry);
|
||||
out:
|
||||
return rc;
|
||||
|
|
Loading…
Reference in New Issue