diff options
author | jdike <jdike> | 2004-02-16 00:11:15 +0000 |
---|---|---|
committer | jdike <jdike> | 2004-02-16 00:11:15 +0000 |
commit | 49610130b9b40072c35955627f038fddf454ea07 (patch) | |
tree | 2e869f1d6cb076c4440737edf73da4f7061f8d3a | |
parent | e43e0a1532f04b0189e83ba42b2ddf84917d71fb (diff) | |
download | uml-history-49610130b9b40072c35955627f038fddf454ea07.tar.gz |
Fixed a race which could cause a userspace signal to appear to have happened
in the kernel.
-rw-r--r-- | arch/um/kernel/skas/trap_user.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/um/kernel/skas/trap_user.c b/arch/um/kernel/skas/trap_user.c index ef45cb9..380f351 100644 --- a/arch/um/kernel/skas/trap_user.c +++ b/arch/um/kernel/skas/trap_user.c @@ -19,8 +19,10 @@ void sig_handler_common_skas(int sig, void *sc_ptr) struct skas_regs *r; struct signal_info *info; int save_errno = errno; + int save_user; r = &TASK_REGS(get_current())->skas; + save_user = r->is_user; r->is_user = 0; r->fault_addr = SC_FAULT_ADDR(sc); r->fault_type = SC_FAULT_TYPE(sc); @@ -33,6 +35,7 @@ void sig_handler_common_skas(int sig, void *sc_ptr) (*info->handler)(sig, (union uml_pt_regs *) r); errno = save_errno; + r->is_user = save_user; } extern int missed_ticks[]; |