Skip to content

Commit

Permalink
[PATCH] uml: fix big stack user
Browse files Browse the repository at this point in the history
Switch this proc from storing 4k of data (a whole path) on the stack to
keeping it on the heap.

Maybe it's not called in process context but only in early boot context (where
in UML you have a normal process stack on the host) but just to be safe, fix
it.

While at it some little readability simplifications.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Paolo 'Blaisorblade' Giarrusso authored and Linus Torvalds committed Apr 11, 2006
1 parent d84a19c commit 87276f7
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions arch/um/os-Linux/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,33 +53,36 @@ static void __init find_tempdir(void)
*/
int make_tempfile(const char *template, char **out_tempname, int do_unlink)
{
char tempname[MAXPATHLEN];
char *tempname;
int fd;

tempname = malloc(MAXPATHLEN);

find_tempdir();
if (*template != '/')
if (template[0] != '/')
strcpy(tempname, tempdir);
else
*tempname = 0;
tempname[0] = '\0';
strcat(tempname, template);
fd = mkstemp(tempname);
if(fd < 0){
fprintf(stderr, "open - cannot create %s: %s\n", tempname,
strerror(errno));
return -1;
goto out;
}
if(do_unlink && (unlink(tempname) < 0)){
perror("unlink");
return -1;
goto out;
}
if(out_tempname){
*out_tempname = strdup(tempname);
if(*out_tempname == NULL){
perror("strdup");
return -1;
}
*out_tempname = tempname;
} else {
free(tempname);
}
return(fd);
out:
free(tempname);
return -1;
}

#define TEMPNAME_TEMPLATE "vm_file-XXXXXX"
Expand Down

0 comments on commit 87276f7

Please sign in to comment.