uml: free resources
authorDavidlohr Bueso <dave@gnu.org>
Tue, 26 Jul 2011 00:12:52 +0000 (17:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Jul 2011 03:57:13 +0000 (20:57 -0700)
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>
arch/um/os-Linux/mem.c

index e696144d2be3ddb23ba952fdd17ea8fdf923036c..62878cf1d33fb8efce33ff9572d080544207cf18 100644 (file)
@@ -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;