diff options
Diffstat (limited to 'arch/um/kernel/skas/process_kern.c')
-rw-r--r-- | arch/um/kernel/skas/process_kern.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/um/kernel/skas/process_kern.c b/arch/um/kernel/skas/process_kern.c index 5d096ea63b97..fc71ef295782 100644 --- a/arch/um/kernel/skas/process_kern.c +++ b/arch/um/kernel/skas/process_kern.c | |||
@@ -68,8 +68,11 @@ void new_thread_handler(int sig) | |||
68 | * 0 if it just exits | 68 | * 0 if it just exits |
69 | */ | 69 | */ |
70 | n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); | 70 | n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf); |
71 | if(n == 1) | 71 | if(n == 1){ |
72 | /* Handle any immediate reschedules or signals */ | ||
73 | interrupt_end(); | ||
72 | userspace(¤t->thread.regs.regs); | 74 | userspace(¤t->thread.regs.regs); |
75 | } | ||
73 | else do_exit(0); | 76 | else do_exit(0); |
74 | } | 77 | } |
75 | 78 | ||
@@ -83,10 +86,6 @@ void release_thread_skas(struct task_struct *task) | |||
83 | { | 86 | { |
84 | } | 87 | } |
85 | 88 | ||
86 | void exit_thread_skas(void) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | void fork_handler(int sig) | 89 | void fork_handler(int sig) |
91 | { | 90 | { |
92 | change_sig(SIGUSR1, 1); | 91 | change_sig(SIGUSR1, 1); |
@@ -100,6 +99,8 @@ void fork_handler(int sig) | |||
100 | schedule_tail(current->thread.prev_sched); | 99 | schedule_tail(current->thread.prev_sched); |
101 | current->thread.prev_sched = NULL; | 100 | current->thread.prev_sched = NULL; |
102 | 101 | ||
102 | /* Handle any immediate reschedules or signals */ | ||
103 | interrupt_end(); | ||
103 | userspace(¤t->thread.regs.regs); | 104 | userspace(¤t->thread.regs.regs); |
104 | } | 105 | } |
105 | 106 | ||