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:
committed by
Linus Torvalds
parent
9a8beb9306
commit
2a6d0ac182
@@ -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;
|
||||||
|
Reference in New Issue
Block a user