diff options
| -rw-r--r-- | arch/s390/include/asm/thread_info.h | 2 | ||||
| -rw-r--r-- | arch/s390/kernel/asm-offsets.c | 1 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_signal.c | 14 | ||||
| -rw-r--r-- | arch/s390/kernel/signal.c | 14 |
4 files changed, 4 insertions, 27 deletions
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h index ef1df718642d..0a6dcff94cde 100644 --- a/arch/s390/include/asm/thread_info.h +++ b/arch/s390/include/asm/thread_info.h | |||
| @@ -34,7 +34,6 @@ | |||
| 34 | */ | 34 | */ |
| 35 | struct thread_info { | 35 | struct thread_info { |
| 36 | struct task_struct *task; /* main task structure */ | 36 | struct task_struct *task; /* main task structure */ |
| 37 | struct exec_domain *exec_domain; /* execution domain */ | ||
| 38 | unsigned long flags; /* low level flags */ | 37 | unsigned long flags; /* low level flags */ |
| 39 | unsigned long sys_call_table; /* System call table address */ | 38 | unsigned long sys_call_table; /* System call table address */ |
| 40 | unsigned int cpu; /* current CPU */ | 39 | unsigned int cpu; /* current CPU */ |
| @@ -51,7 +50,6 @@ struct thread_info { | |||
| 51 | #define INIT_THREAD_INFO(tsk) \ | 50 | #define INIT_THREAD_INFO(tsk) \ |
| 52 | { \ | 51 | { \ |
| 53 | .task = &tsk, \ | 52 | .task = &tsk, \ |
| 54 | .exec_domain = &default_exec_domain, \ | ||
| 55 | .flags = 0, \ | 53 | .flags = 0, \ |
| 56 | .cpu = 0, \ | 54 | .cpu = 0, \ |
| 57 | .preempt_count = INIT_PREEMPT_COUNT, \ | 55 | .preempt_count = INIT_PREEMPT_COUNT, \ |
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c index e07e91605353..e52a202b13b5 100644 --- a/arch/s390/kernel/asm-offsets.c +++ b/arch/s390/kernel/asm-offsets.c | |||
| @@ -34,7 +34,6 @@ int main(void) | |||
| 34 | DEFINE(__THREAD_per_paid, offsetof(struct task_struct, thread.per_event.paid)); | 34 | DEFINE(__THREAD_per_paid, offsetof(struct task_struct, thread.per_event.paid)); |
| 35 | BLANK(); | 35 | BLANK(); |
| 36 | DEFINE(__TI_task, offsetof(struct thread_info, task)); | 36 | DEFINE(__TI_task, offsetof(struct thread_info, task)); |
| 37 | DEFINE(__TI_domain, offsetof(struct thread_info, exec_domain)); | ||
| 38 | DEFINE(__TI_flags, offsetof(struct thread_info, flags)); | 37 | DEFINE(__TI_flags, offsetof(struct thread_info, flags)); |
| 39 | DEFINE(__TI_sysc_table, offsetof(struct thread_info, sys_call_table)); | 38 | DEFINE(__TI_sysc_table, offsetof(struct thread_info, sys_call_table)); |
| 40 | DEFINE(__TI_cpu, offsetof(struct thread_info, cpu)); | 39 | DEFINE(__TI_cpu, offsetof(struct thread_info, cpu)); |
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index bc1df12dd4f8..fe8d6924efaa 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
| @@ -370,16 +370,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) | |||
| 370 | return (void __user *)((sp - frame_size) & -8ul); | 370 | return (void __user *)((sp - frame_size) & -8ul); |
| 371 | } | 371 | } |
| 372 | 372 | ||
| 373 | static inline int map_signal(int sig) | ||
| 374 | { | ||
| 375 | if (current_thread_info()->exec_domain | ||
| 376 | && current_thread_info()->exec_domain->signal_invmap | ||
| 377 | && sig < 32) | ||
| 378 | return current_thread_info()->exec_domain->signal_invmap[sig]; | ||
| 379 | else | ||
| 380 | return sig; | ||
| 381 | } | ||
| 382 | |||
| 383 | static int setup_frame32(struct ksignal *ksig, sigset_t *set, | 373 | static int setup_frame32(struct ksignal *ksig, sigset_t *set, |
| 384 | struct pt_regs *regs) | 374 | struct pt_regs *regs) |
| 385 | { | 375 | { |
| @@ -449,7 +439,7 @@ static int setup_frame32(struct ksignal *ksig, sigset_t *set, | |||
| 449 | (regs->psw.mask & ~PSW_MASK_ASC); | 439 | (regs->psw.mask & ~PSW_MASK_ASC); |
| 450 | regs->psw.addr = (__force __u64) ksig->ka.sa.sa_handler; | 440 | regs->psw.addr = (__force __u64) ksig->ka.sa.sa_handler; |
| 451 | 441 | ||
| 452 | regs->gprs[2] = map_signal(sig); | 442 | regs->gprs[2] = sig; |
| 453 | regs->gprs[3] = (__force __u64) &frame->sc; | 443 | regs->gprs[3] = (__force __u64) &frame->sc; |
| 454 | 444 | ||
| 455 | /* We forgot to include these in the sigcontext. | 445 | /* We forgot to include these in the sigcontext. |
| @@ -532,7 +522,7 @@ static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set, | |||
| 532 | (regs->psw.mask & ~PSW_MASK_ASC); | 522 | (regs->psw.mask & ~PSW_MASK_ASC); |
| 533 | regs->psw.addr = (__u64 __force) ksig->ka.sa.sa_handler; | 523 | regs->psw.addr = (__u64 __force) ksig->ka.sa.sa_handler; |
| 534 | 524 | ||
| 535 | regs->gprs[2] = map_signal(ksig->sig); | 525 | regs->gprs[2] = ksig->sig; |
| 536 | regs->gprs[3] = (__force __u64) &frame->info; | 526 | regs->gprs[3] = (__force __u64) &frame->info; |
| 537 | regs->gprs[4] = (__force __u64) &frame->uc; | 527 | regs->gprs[4] = (__force __u64) &frame->uc; |
| 538 | regs->gprs[5] = task_thread_info(current)->last_break; | 528 | regs->gprs[5] = task_thread_info(current)->last_break; |
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c index b3ae6f70c6d6..c3f71c4f7b71 100644 --- a/arch/s390/kernel/signal.c +++ b/arch/s390/kernel/signal.c | |||
| @@ -309,16 +309,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) | |||
| 309 | return (void __user *)((sp - frame_size) & -8ul); | 309 | return (void __user *)((sp - frame_size) & -8ul); |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | static inline int map_signal(int sig) | ||
| 313 | { | ||
| 314 | if (current_thread_info()->exec_domain | ||
| 315 | && current_thread_info()->exec_domain->signal_invmap | ||
| 316 | && sig < 32) | ||
| 317 | return current_thread_info()->exec_domain->signal_invmap[sig]; | ||
| 318 | else | ||
| 319 | return sig; | ||
| 320 | } | ||
| 321 | |||
| 322 | static int setup_frame(int sig, struct k_sigaction *ka, | 312 | static int setup_frame(int sig, struct k_sigaction *ka, |
| 323 | sigset_t *set, struct pt_regs * regs) | 313 | sigset_t *set, struct pt_regs * regs) |
| 324 | { | 314 | { |
| @@ -386,7 +376,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, | |||
| 386 | (regs->psw.mask & ~PSW_MASK_ASC); | 376 | (regs->psw.mask & ~PSW_MASK_ASC); |
| 387 | regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; | 377 | regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; |
| 388 | 378 | ||
| 389 | regs->gprs[2] = map_signal(sig); | 379 | regs->gprs[2] = sig; |
| 390 | regs->gprs[3] = (unsigned long) &frame->sc; | 380 | regs->gprs[3] = (unsigned long) &frame->sc; |
| 391 | 381 | ||
| 392 | /* We forgot to include these in the sigcontext. | 382 | /* We forgot to include these in the sigcontext. |
| @@ -468,7 +458,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | |||
| 468 | (regs->psw.mask & ~PSW_MASK_ASC); | 458 | (regs->psw.mask & ~PSW_MASK_ASC); |
| 469 | regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE; | 459 | regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE; |
| 470 | 460 | ||
| 471 | regs->gprs[2] = map_signal(ksig->sig); | 461 | regs->gprs[2] = ksig->sig; |
| 472 | regs->gprs[3] = (unsigned long) &frame->info; | 462 | regs->gprs[3] = (unsigned long) &frame->info; |
| 473 | regs->gprs[4] = (unsigned long) &frame->uc; | 463 | regs->gprs[4] = (unsigned long) &frame->uc; |
| 474 | regs->gprs[5] = task_thread_info(current)->last_break; | 464 | regs->gprs[5] = task_thread_info(current)->last_break; |
