summaryrefslogtreecommitdiff
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2011-03-23 09:56:30 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2011-03-23 09:56:55 -0400
commitbd23a539d0733c9f9ec3f9fc628491fad2658e82 (patch)
treeb64a04b76be41fe62a734b6e9693890a76b117b3 /fs/namei.c
parenteddecbb601c9ea3fab7e67d7892010fc9426d1e6 (diff)
downloadlinux-3.10-bd23a539d0733c9f9ec3f9fc628491fad2658e82.tar.gz
linux-3.10-bd23a539d0733c9f9ec3f9fc628491fad2658e82.tar.bz2
linux-3.10-bd23a539d0733c9f9ec3f9fc628491fad2658e82.zip
fix leaks in path_lookupat()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 5a9a6c3094d..a4dfac650c3 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1644,13 +1644,16 @@ static int path_lookupat(int dfd, const char *name,
err = -ECHILD;
}
- if (!err)
+ if (!err) {
err = handle_reval_path(nd);
+ if (err)
+ path_put(&nd->path);
+ }
if (!err && nd->flags & LOOKUP_DIRECTORY) {
if (!nd->inode->i_op->lookup) {
path_put(&nd->path);
- return -ENOTDIR;
+ err = -ENOTDIR;
}
}