Răsfoiți Sursa

fix leaks in path_lookupat()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 14 ani în urmă
părinte
comite
bd23a539d0
1 a modificat fișierele cu 5 adăugiri și 2 ștergeri
  1. 5 2
      fs/namei.c

+ 5 - 2
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;
 		}
 	}