linux-stable/arch/um/include
Jeff Dike 3e6f2ac480 uml: kill processes instead of panicing kernel
UML was panicing in the case of failures of libc calls which shouldn't happen.
 This is an overreaction since a failure from libc doesn't normally mean that
kernel data structures are in an unknown state.  Instead, the current process
should just be killed if there is no way to recover.

The case that prompted this was a failure of PTRACE_SETREGS restoring the same
state that was read by PTRACE_GETREGS.  It appears that when a process tries
to load a bogus value into a segment register, it segfaults (as expected) and
the value is actually loaded and is seen by PTRACE_GETREGS (not expected).

This case is fixed by forcing a fatal SIGSEGV on the process so that it
immediately dies.  fatal_sigsegv was added for this purpose.  It was declared
as noreturn, so in order to pursuade gcc that it actually does not return, I
added a call to os_dump_core (and declared it noreturn) so that I get a core
file if somehow the process survives.

All other calls in arch/um/os-Linux/skas/process.c got the same treatment,
with failures causing the process to die instead of a kernel panic, with some
exceptions.

userspace_tramp exits with status 1 if anything goes wrong there.  That will
cause start_userspace to return an error.  copy_context_skas0 and
map_stub_pages also now return errors instead of panicing.  Callers of thes
functions were changed to check for errors and do something appropriate.
Usually that's to return an error to their callers.
check_skas3_ptrace_faultinfo just exits since that's too early to do anything
else.

save_registers, restore_registers, and init_registers now return status
instead of panicing on failure, with their callers doing something
appropriate.

There were also duplicate declarations of save_registers and restore_registers
in os.h - these are gone.

I noticed and fixed up some whitespace damage.

Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-05 09:44:28 -08:00
..
skas uml: delete some unused headers 2008-02-05 09:44:26 -08:00
sysdep-i386 uml: fix stub address calculations 2007-10-16 09:43:09 -07:00
sysdep-ia64 [PATCH] uml: S390 preparation, abstract host page fault data 2005-05-05 16:36:36 -07:00
sysdep-ppc Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
sysdep-x86_64 uml: fix stub address calculations 2007-10-16 09:43:09 -07:00
aio.h [PATCH] uml: revert block driver use of host AIO 2005-10-12 08:22:26 -07:00
arch.h uml: further bugs.c tidying 2008-02-05 09:44:25 -08:00
as-layout.h uml: borrow const.h techniques 2008-02-05 09:44:26 -08:00
chan_kern.h uml: handle errors on opening host side of consoles 2007-07-16 09:05:38 -07:00
chan_user.h uml: fix URLs in Kconfig and help strings 2008-02-05 09:44:25 -08:00
common-offsets.h uml: improve detection of host cmov 2008-02-05 09:44:25 -08:00
elf_user.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
frame_kern.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init.h uml: arch/um/include/init.h needs a definition of __used 2008-02-05 09:44:24 -08:00
initrd.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_kern.h IRQ: Use the new typedef for interrupt handler function pointers 2006-10-09 12:19:47 +01:00
irq_user.h uml: style fixes pass 3 2007-10-16 09:43:05 -07:00
kern.h [PATCH] uml: fix declaration of exit() 2006-03-27 08:44:37 -08:00
kern_util.h uml: kill processes instead of panicing kernel 2008-02-05 09:44:28 -08:00
line.h [PATCH] uml: fix previous console locking 2007-02-11 10:51:22 -08:00
longjmp.h [PATCH] uml: make UML_SETJMP always safe 2006-10-11 11:14:20 -07:00
mconsole.h uml: remove os_* usage from userspace files 2007-10-16 09:43:06 -07:00
mconsole_kern.h [PATCH] uml: console whitespace and comment tidying 2007-02-11 10:51:21 -08:00
mem.h uml: remove __u64 usage from physical memory subsystem 2007-10-16 09:43:05 -07:00
mem_kern.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mem_user.h [PATCH] UML: Hotplug memory, take 2 2006-03-31 12:18:50 -08:00
net_kern.h uml: network driver MTU cleanups 2007-10-16 09:43:08 -07:00
net_user.h uml: network driver MTU cleanups 2007-10-16 09:43:08 -07:00
os.h uml: kill processes instead of panicing kernel 2008-02-05 09:44:28 -08:00
process.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ptrace_user.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
registers.h uml: kill processes instead of panicing kernel 2008-02-05 09:44:28 -08:00
sigcontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sigio.h [PATCH] uml: SIGIO formatting fixes 2007-02-11 10:51:23 -08:00
skas_ptrace.h [PATCH] uml: header and code cleanup 2005-05-05 16:36:39 -07:00
skas_ptregs.h [PATCH] uml makefiles sanitized 2005-09-29 08:46:26 -07:00
syscall.h [PATCH] uml: system call path cleanup 2005-09-05 00:06:23 -07:00
sysrq.h [PATCH] uml: stack dump fix 2005-05-28 16:46:13 -07:00
task.h uml: remove code made redundant by CHOOSE_MODE removal 2007-10-16 09:43:05 -07:00
tempfile.h [PATCH] uml: locking comments in memory and tempfile code 2007-02-11 10:51:23 -08:00
tlb.h uml: clean up tlb flush path 2007-10-16 09:43:06 -07:00
ubd_user.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
um_malloc.h uml: Eliminate kernel allocator wrappers 2007-07-16 09:05:38 -07:00
um_mmu.h uml: fold mmu_context_skas into mm_context 2007-10-16 09:43:06 -07:00
um_uaccess.h uml: header untangling 2008-02-05 09:44:28 -08:00
user.h uml: fix build for !CONFIG_PRINTK 2007-11-14 18:45:43 -08:00