aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-10-11alpha: take SIGPENDING/NOTIFY_RESUME loop into signal.cAl Viro
Turn the slow side of work_pending into C function, including all the looping. What we get out of that: * we do _not_ call get_signal_to_deliver() with IRQs disabled anymore * no need to save/restore volatiles on each pass if there turns to be more than one (unlikely, but still) * all double-restart prevention is in C now. * glue gets simpler. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-11alpha: simplify TIF_NEED_RESCHED handlingAl Viro
In case we have both NEED_RESCHED and SIGPENDING/NOTIFY_RESUME, handle the latter first. We'll get to original priorities in the next commit, but now that allows to simplify the treatment of NEED_RESCHED-only case nicely. Namely, now there no need to preserve the data for restarts across the call of schedule() in $work_resched; we can get there only if we had either returned from syscall without SIGPENDING (in which case we should've had no restart-worthy return value and want no restarts) or already got through do_notify_resume() call (in which case we want no restarts anymore). So we can just slap 0 into $19 instead of preserving it (and $20). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01alpha: don't open-code trace_report_syscall_{enter,exit}Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01Uninclude linux/freezer.hRichard Weinberger
This include is no longer needed. (seems to be a leftover from try_to_freeze()) Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01m32r: trim masksAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01avr32: trim masksAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01tile: don't bother with SIGTRAP in setup_frameAl Viro
Tell signal_delivered() to do it instead. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01microblaze: don't bother with SIGTRAP in setup_rt_frame()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: don't bother with SIGTRAP in setup_frame()Al Viro
... just tell signal_delivered() to do it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01frv: no need to raise SIGTRAP in setup_frame()Al Viro
signal_delivered() will do it in the same case... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01x86: get rid of duplicate code in case of CONFIG_VM86Al Viro
no need to have the call of do_notify_resume() + checks around it duplicated for vm86 case - a bit of rearranging of ifdefs and we'll have a perfectly fine copy to jump back to. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01unicore32: remove pointless testAl Viro
we can get into work_pending only if at least one of NEED_RESCHED, SIGPENDING or NOTIFY_RESUME is set. So once we'd found no NEED_RESCHED, there's no need to check that one of the other two is set. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01h8300: trim _TIF_WORK_MASKAl Viro
Only the three usual flags (NEED_RESCHED/SIGPENDING/NOTIFY_RESUME) are looked at in the code checking _TIF_WORK_MASK on that one. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01parisc: decide whether to go to slow path (tracesys) based on thread flagsAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01parisc: don't bother looping in do_signal()Al Viro
entry.S code had been looping until no pending signals are left since 2005 anyway; no need to bother with that in do_signal() itself. If the failure to set a sigframe up raises SIGSEGV, we'll just pick it up the next time around the loop(s) in entry.S anyway. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01parisc: fix double restartsAl Viro
Don't bother restoring r28 on syscall restarts; it's clobbered by syscall anyway. Reuse (now unused) ->orig_r28 as "no restarts allowed" flag. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01bury the rest of TIF_IRETAl Viro
Some architectures had blindly copied it for no reason whatsoever. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01sanitize tsk_is_polling()Al Viro
Make default just return 0. The current default (checking TIF_POLLING_NRFLAG) is taken to architectures that need it; ones that don't do polling in their idle threads don't need to defined TIF_POLLING_NRFLAG at all. ia64 defined both TS_POLLING (used by its tsk_is_polling()) and TIF_POLLING_NRFLAG (not used at all). Killed the latter... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01bury _TIF_RESTORE_SIGMASKAl Viro
never used... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01unicore32: unobfuscate _TIF_WORK_MASKAl Viro
bits 3..7 in flags are never set there, so this 0xff is pointless Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mips: NOTIFY_RESUME is not needed in TIF masksAl Viro
If it's set, SIGPENDING is also set. And SIGPENDING is present in the masks... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mips: merge the identical "return from syscall" per-ABI codeAl Viro
No need to keep 4 copies of that stuff; merged and taken to entry.S, unused public symbols there killed off. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mips: unobfuscate _TIF..._MASKAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mips: prevent hitting do_notify_resume() with !user_mode(regs)Al Viro
too late to do anything there... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01ia64: can't reach do_signal() when returning to kernel modeAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01score: fix bogus restarts on sigreturn()Al Viro
we *really* don't want to have restart logics hit when we are returning from sigreturn() - random replacement of %r4 with -4 just because a signal had been noticed from timer interrupt that came when %r4 happened to contain -514 is not nice at all. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: get rid of calling do_notify_resume() when returning to kernel modeAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01xtensa: can't get to do_notify_resume() when user_mode(regs) is not trueAl Viro
asm glue checks that Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01c6x: switch to generic kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01c6x: switch to generic sys_execveMark Salter
Signed-off-by: Mark Salter <msalter@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01c6x: switch to generic kernel_execveMark Salter
Signed-off-by: Mark Salter <msalter@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01c6x: add ret_from_kernel_thread(), simplify kernel_thread()Mark Salter
Signed-off-by: Mark Salter <msalter@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: convert to generic kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: switch to generic kernel_execve()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: switch to generic sys_execve()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01mn10300: split ret_from_fork, simplify kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01frv: switch to generic kernel_thread()Al Viro
2012-10-01frv: switch to generic kernel_execveAl Viro
Acked-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01frv: switch to generic sys_execve()Al Viro
current_pt_regs() here is simply __frame Acked-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01frv: split ret_from_fork, simplify kernel_thread() a lotAl Viro
Acked-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01m68k: switch to generic sys_execve()/kernel_execve()Al Viro
The tricky part here is that task_pt_regs() on m68k works *only* for process inside do_signal(). However, we need something much simpler - pt_regs of a process inside do_signal() may be at different offsets from the stack bottom, depending on the way we'd entered the kernel, but for a task inside sys_execve() it *is* at constant offset. Moreover, for a kernel thread about to become a userland process the same location is also fine - setting sp to that will leave the kernel stack pointer at the very bottom of the kernel stack when we finally switch to userland. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01m68k: split ret_from_fork(), simplify kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-10-01m68k: always set stack frame format for ColdFire on thread startGreg Ungerer
The stack frame "format" field needs to be explicitly set on thread creation on ColdFire. For a normal long word aligned user stack pointer the frame format is 0x4. We were doing this for non-MMU ColdFire, but not for the case with MMU enabled. So fix it so we always do it if targeting ColdFire. The old code happend to rely on the stack frame format being inhereted from the process calling exec. Furture changes means that may not always work, so we really do want to set it explicitly. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30powerpc: switch to generic sys_execve()/kernel_execve()Al Viro
the only non-obvious part is that current_pt_regs() is really needed here - task_pt_regs() is NULL for kernel threads; it's OK for ptrace uses (the thing task_pt_regs() is intended for), but not for us. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30powerpc: split ret_from_forkAl Viro
... and get rid of in-kernel syscalls in kernel_thread() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30s390: convert to generic kernel_execve()Al Viro
same situation as with alpha and arm - only massage needed Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30s390: switch to generic kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30s390: fold kernel_thread_helper() into ret_from_fork()Al Viro
... and don't bother with syscall return path in case of kernel threads. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30s390: fold execve_tail() into start_thread(), convert to generic sys_execve()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-09-30um: switch to generic kernel_thread()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>