aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-15 16:53:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-15 16:53:55 -0400
commitfa2e5c073a355465a2a8c9a2fbecf404f9857c3a (patch)
tree771be75e5436031ad53649634dffa67f6667b083 /arch/s390
parente44740c1a94b5d39b093045920f543a7bc135584 (diff)
parent97b2f0dc331474fb80ba4f4e4aee1d8e9ffbf7ce (diff)
Merge branch 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc
Pull exec domain removal from Richard Weinberger: "This series removes execution domain support from Linux. The idea behind exec domains was to support different ABIs. The feature was never complete nor stable. Let's rip it out and make the kernel signal handling code less complicated" * 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (27 commits) arm64: Removed unused variable sparc: Fix execution domain removal Remove rest of exec domains. arch: Remove exec_domain from remaining archs arc: Remove signal translation and exec_domain xtensa: Remove signal translation and exec_domain xtensa: Autogenerate offsets in struct thread_info x86: Remove signal translation and exec_domain unicore32: Remove signal translation and exec_domain um: Remove signal translation and exec_domain tile: Remove signal translation and exec_domain sparc: Remove signal translation and exec_domain sh: Remove signal translation and exec_domain s390: Remove signal translation and exec_domain mn10300: Remove signal translation and exec_domain microblaze: Remove signal translation and exec_domain m68k: Remove signal translation and exec_domain m32r: Remove signal translation and exec_domain m32r: Autogenerate offsets in struct thread_info frv: Remove signal translation and exec_domain ...
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/include/asm/thread_info.h2
-rw-r--r--arch/s390/kernel/asm-offsets.c1
-rw-r--r--arch/s390/kernel/compat_signal.c14
-rw-r--r--arch/s390/kernel/signal.c14
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 d532098d98bf..4c27ec764c36 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -29,7 +29,6 @@
29 */ 29 */
30struct thread_info { 30struct thread_info {
31 struct task_struct *task; /* main task structure */ 31 struct task_struct *task; /* main task structure */
32 struct exec_domain *exec_domain; /* execution domain */
33 unsigned long flags; /* low level flags */ 32 unsigned long flags; /* low level flags */
34 unsigned long sys_call_table; /* System call table address */ 33 unsigned long sys_call_table; /* System call table address */
35 unsigned int cpu; /* current CPU */ 34 unsigned int cpu; /* current CPU */
@@ -46,7 +45,6 @@ struct thread_info {
46#define INIT_THREAD_INFO(tsk) \ 45#define INIT_THREAD_INFO(tsk) \
47{ \ 46{ \
48 .task = &tsk, \ 47 .task = &tsk, \
49 .exec_domain = &default_exec_domain, \
50 .flags = 0, \ 48 .flags = 0, \
51 .cpu = 0, \ 49 .cpu = 0, \
52 .preempt_count = INIT_PREEMPT_COUNT, \ 50 .preempt_count = INIT_PREEMPT_COUNT, \
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c
index f35058da8eaf..c7d1b9d09011 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
373static 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
383static int setup_frame32(struct ksignal *ksig, sigset_t *set, 373static 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 7fec60cb0b75..c551f22ce066 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -301,16 +301,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
301 return (void __user *)((sp - frame_size) & -8ul); 301 return (void __user *)((sp - frame_size) & -8ul);
302} 302}
303 303
304static inline int map_signal(int sig)
305{
306 if (current_thread_info()->exec_domain
307 && current_thread_info()->exec_domain->signal_invmap
308 && sig < 32)
309 return current_thread_info()->exec_domain->signal_invmap[sig];
310 else
311 return sig;
312}
313
314static int setup_frame(int sig, struct k_sigaction *ka, 304static int setup_frame(int sig, struct k_sigaction *ka,
315 sigset_t *set, struct pt_regs * regs) 305 sigset_t *set, struct pt_regs * regs)
316{ 306{
@@ -378,7 +368,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
378 (regs->psw.mask & ~PSW_MASK_ASC); 368 (regs->psw.mask & ~PSW_MASK_ASC);
379 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; 369 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE;
380 370
381 regs->gprs[2] = map_signal(sig); 371 regs->gprs[2] = sig;
382 regs->gprs[3] = (unsigned long) &frame->sc; 372 regs->gprs[3] = (unsigned long) &frame->sc;
383 373
384 /* We forgot to include these in the sigcontext. 374 /* We forgot to include these in the sigcontext.
@@ -458,7 +448,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
458 (regs->psw.mask & ~PSW_MASK_ASC); 448 (regs->psw.mask & ~PSW_MASK_ASC);
459 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE; 449 regs->psw.addr = (unsigned long) ksig->ka.sa.sa_handler | PSW_ADDR_AMODE;
460 450
461 regs->gprs[2] = map_signal(ksig->sig); 451 regs->gprs[2] = ksig->sig;
462 regs->gprs[3] = (unsigned long) &frame->info; 452 regs->gprs[3] = (unsigned long) &frame->info;
463 regs->gprs[4] = (unsigned long) &frame->uc; 453 regs->gprs[4] = (unsigned long) &frame->uc;
464 regs->gprs[5] = task_thread_info(current)->last_break; 454 regs->gprs[5] = task_thread_info(current)->last_break;