[PATCH] uml: avoid malloc to sleep in atomic sections
Ugly trick to help make malloc not sleeping - we can't do anything else. But this is not yet optimal, since spinlock don't trigger in_atomic() when preemption is disabled. Also, even if ugly, this was already used in one place, and was even more bogus. Fix it. 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>
This commit is contained in:
committed by
Linus Torvalds
parent
b6a2b13778
commit
b63162939c
@@ -60,7 +60,7 @@ int run_helper(void (*pre_exec)(void *), void *pre_data, char **argv,
|
||||
|
||||
if((stack_out != NULL) && (*stack_out != 0))
|
||||
stack = *stack_out;
|
||||
else stack = alloc_stack(0, um_in_interrupt());
|
||||
else stack = alloc_stack(0, __cant_sleep());
|
||||
if(stack == 0)
|
||||
return(-ENOMEM);
|
||||
|
||||
@@ -124,7 +124,7 @@ int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags,
|
||||
unsigned long stack, sp;
|
||||
int pid, status, err;
|
||||
|
||||
stack = alloc_stack(stack_order, um_in_interrupt());
|
||||
stack = alloc_stack(stack_order, __cant_sleep());
|
||||
if(stack == 0) return(-ENOMEM);
|
||||
|
||||
sp = stack + (page_size() << stack_order) - sizeof(void *);
|
||||
|
||||
Reference in New Issue
Block a user