nfs_lookup_revalidate(): fix a leak
We are leaking fattr and fhandle if we decide that dentry is not to be invalidated, after all (e.g. happens to be a mountpoint). Just free both before that... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
696199f8cc
commit
c44600c9d1
@ -1101,6 +1101,8 @@ out_set_verifier:
|
|||||||
out_zap_parent:
|
out_zap_parent:
|
||||||
nfs_zap_caches(dir);
|
nfs_zap_caches(dir);
|
||||||
out_bad:
|
out_bad:
|
||||||
|
nfs_free_fattr(fattr);
|
||||||
|
nfs_free_fhandle(fhandle);
|
||||||
nfs_mark_for_revalidate(dir);
|
nfs_mark_for_revalidate(dir);
|
||||||
if (inode && S_ISDIR(inode->i_mode)) {
|
if (inode && S_ISDIR(inode->i_mode)) {
|
||||||
/* Purge readdir caches. */
|
/* Purge readdir caches. */
|
||||||
@ -1113,8 +1115,6 @@ out_zap_parent:
|
|||||||
shrink_dcache_parent(dentry);
|
shrink_dcache_parent(dentry);
|
||||||
}
|
}
|
||||||
d_drop(dentry);
|
d_drop(dentry);
|
||||||
nfs_free_fattr(fattr);
|
|
||||||
nfs_free_fhandle(fhandle);
|
|
||||||
dput(parent);
|
dput(parent);
|
||||||
dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is invalid\n",
|
dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is invalid\n",
|
||||||
__func__, dentry->d_parent->d_name.name,
|
__func__, dentry->d_parent->d_name.name,
|
||||||
|
Loading…
Reference in New Issue
Block a user