fix leaks in path_lookupat()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 23 Mar 2011 13:56:30 +0000 (09:56 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 23 Mar 2011 13:56:55 +0000 (09:56 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index 5a9a6c3094daf1fe7cd6fbc4e95110dd2bd028e0..a4dfac650c3c4af5f38cfe6478c64c779a41b72a 100644 (file)
@@ -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;
                }
        }