uml: free resources

When creating the temp file there's a memory and file descriptor leak upon
error.

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
Reviewed-by: Vitaliy Ivanov <vitalivanov@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Davidlohr Bueso 2011-07-25 17:12:52 -07:00 committed by Linus Torvalds
parent 9a8beb9306
commit 2a6d0ac182
1 changed files with 4 additions and 2 deletions

View File

@ -176,7 +176,7 @@ static int __init make_tempfile(const char *template, char **out_tempname,
find_tempdir(); find_tempdir();
if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN)) if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN))
return -1; goto out;
if (template[0] != '/') if (template[0] != '/')
strcpy(tempname, tempdir); strcpy(tempname, tempdir);
@ -191,13 +191,15 @@ static int __init make_tempfile(const char *template, char **out_tempname,
} }
if (do_unlink && (unlink(tempname) < 0)) { if (do_unlink && (unlink(tempname) < 0)) {
perror("unlink"); perror("unlink");
goto out; goto close;
} }
if (out_tempname) { if (out_tempname) {
*out_tempname = tempname; *out_tempname = tempname;
} else } else
free(tempname); free(tempname);
return fd; return fd;
close:
close(fd);
out: out:
free(tempname); free(tempname);
return -1; return -1;