diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 23:02:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 23:02:25 -0400 |
commit | 42859eea96ba6beabfb0369a1eeffa3c7d2bd9cb (patch) | |
tree | fa38aeda0d6e7a4c48a882b166b8643594a1ad50 /arch/s390/include | |
parent | f59b51fe3d3092c08d7d554ecb40db24011b2ebc (diff) | |
parent | f322220d6159455da2b5a8a596d802c8695fed30 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull generic execve() changes from Al Viro:
"This introduces the generic kernel_thread() and kernel_execve()
functions, and switches x86, arm, alpha, um and s390 over to them."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (26 commits)
s390: convert to generic kernel_execve()
s390: switch to generic kernel_thread()
s390: fold kernel_thread_helper() into ret_from_fork()
s390: fold execve_tail() into start_thread(), convert to generic sys_execve()
um: switch to generic kernel_thread()
x86, um/x86: switch to generic sys_execve and kernel_execve
x86: split ret_from_fork
alpha: introduce ret_from_kernel_execve(), switch to generic kernel_execve()
alpha: switch to generic kernel_thread()
alpha: switch to generic sys_execve()
arm: get rid of execve wrapper, switch to generic execve() implementation
arm: optimized current_pt_regs()
arm: introduce ret_from_kernel_execve(), switch to generic kernel_execve()
arm: split ret_from_fork, simplify kernel_thread() [based on patch by rmk]
generic sys_execve()
generic kernel_execve()
new helper: current_pt_regs()
preparation for generic kernel_thread()
um: kill thread->forking
um: let signal_delivered() do SIGTRAP on singlestepping into handler
...
Diffstat (limited to 'arch/s390/include')
-rw-r--r-- | arch/s390/include/asm/processor.h | 4 | ||||
-rw-r--r-- | arch/s390/include/asm/unistd.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index 56831dfa919..94e749c9023 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h | |||
@@ -35,6 +35,7 @@ static inline void get_cpu_id(struct cpuid *ptr) | |||
35 | extern void s390_adjust_jiffies(void); | 35 | extern void s390_adjust_jiffies(void); |
36 | extern const struct seq_operations cpuinfo_op; | 36 | extern const struct seq_operations cpuinfo_op; |
37 | extern int sysctl_ieee_emulation_warnings; | 37 | extern int sysctl_ieee_emulation_warnings; |
38 | extern void execve_tail(void); | ||
38 | 39 | ||
39 | /* | 40 | /* |
40 | * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. | 41 | * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. |
@@ -126,6 +127,7 @@ struct stack_frame { | |||
126 | regs->psw.mask = psw_user_bits | PSW_MASK_EA | PSW_MASK_BA; \ | 127 | regs->psw.mask = psw_user_bits | PSW_MASK_EA | PSW_MASK_BA; \ |
127 | regs->psw.addr = new_psw | PSW_ADDR_AMODE; \ | 128 | regs->psw.addr = new_psw | PSW_ADDR_AMODE; \ |
128 | regs->gprs[15] = new_stackp; \ | 129 | regs->gprs[15] = new_stackp; \ |
130 | execve_tail(); \ | ||
129 | } while (0) | 131 | } while (0) |
130 | 132 | ||
131 | #define start_thread31(regs, new_psw, new_stackp) do { \ | 133 | #define start_thread31(regs, new_psw, new_stackp) do { \ |
@@ -135,6 +137,7 @@ struct stack_frame { | |||
135 | __tlb_flush_mm(current->mm); \ | 137 | __tlb_flush_mm(current->mm); \ |
136 | crst_table_downgrade(current->mm, 1UL << 31); \ | 138 | crst_table_downgrade(current->mm, 1UL << 31); \ |
137 | update_mm(current->mm, current); \ | 139 | update_mm(current->mm, current); \ |
140 | execve_tail(); \ | ||
138 | } while (0) | 141 | } while (0) |
139 | 142 | ||
140 | /* Forward declaration, a strange C thing */ | 143 | /* Forward declaration, a strange C thing */ |
@@ -150,7 +153,6 @@ static inline void show_cacheinfo(struct seq_file *m) { } | |||
150 | 153 | ||
151 | /* Free all resources held by a thread. */ | 154 | /* Free all resources held by a thread. */ |
152 | extern void release_thread(struct task_struct *); | 155 | extern void release_thread(struct task_struct *); |
153 | extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); | ||
154 | 156 | ||
155 | /* | 157 | /* |
156 | * Return saved PC of a blocked thread. | 158 | * Return saved PC of a blocked thread. |
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h index 4e64b5cd155..8192e292753 100644 --- a/arch/s390/include/asm/unistd.h +++ b/arch/s390/include/asm/unistd.h | |||
@@ -417,6 +417,8 @@ | |||
417 | # define __ARCH_WANT_COMPAT_SYS_TIME | 417 | # define __ARCH_WANT_COMPAT_SYS_TIME |
418 | # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND | 418 | # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND |
419 | # endif | 419 | # endif |
420 | #define __ARCH_WANT_SYS_EXECVE | ||
421 | #define __ARCH_WANT_KERNEL_EXECVE | ||
420 | 422 | ||
421 | /* | 423 | /* |
422 | * "Conditional" syscalls | 424 | * "Conditional" syscalls |