mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
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:
parent
9a8beb9306
commit
2a6d0ac182
@ -176,7 +176,7 @@ static int __init make_tempfile(const char *template, char **out_tempname,
|
||||
|
||||
find_tempdir();
|
||||
if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN))
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
if (template[0] != '/')
|
||||
strcpy(tempname, tempdir);
|
||||
@ -191,13 +191,15 @@ static int __init make_tempfile(const char *template, char **out_tempname,
|
||||
}
|
||||
if (do_unlink && (unlink(tempname) < 0)) {
|
||||
perror("unlink");
|
||||
goto out;
|
||||
goto close;
|
||||
}
|
||||
if (out_tempname) {
|
||||
*out_tempname = tempname;
|
||||
} else
|
||||
free(tempname);
|
||||
return fd;
|
||||
close:
|
||||
close(fd);
|
||||
out:
|
||||
free(tempname);
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user