Revision c578455a3eccf4dd7bd111e77129c301d6d67914 authored by Bodo Stroesser on 05 May 2005, 23:15:31 UTC, committed by Linus Torvalds on 05 May 2005, 23:36:36 UTC
This patch removes the arch-specific fault/trap-infos from thread and
skas-regs.

It adds a new struct faultinfo, that is arch-specific defined in
sysdep/faultinfo.h.

The structure is inserted in thread.arch and thread.regs.skas and
thread.regs.tt

Now, segv and other trap-handlers can copy the contents from regs.X.faultinfo
to thread.arch.faultinfo with one simple assignment.

Also, the number of macros necessary is reduced to

FAULT_ADDRESS(struct faultinfo)
    extracts the faulting address from faultinfo

FAULT_WRITE(struct faultinfo)
    extracts the "is_write" flag

SEGV_IS_FIXABLE(struct faultinfo)
    is true for the fixable segvs, i.e. (TRAP == 14)
    on i386

UPT_FAULTINFO(regs)
    result is (struct faultinfo *) to the faultinfo
    in regs->skas.faultinfo

GET_FAULTINFO_FROM_SC(struct faultinfo, struct sigcontext *)
    copies the relevant parts of the sigcontext to
    struct faultinfo.

On SIGSEGV, call user_signal() instead of handle_segv(), if the architecture
provides the information needed in PTRACE_FAULTINFO, or if PTRACE_FAULTINFO is
missing, because segv-stub will provide the info.

The benefit of the change is, that in case of a non-fixable SIGSEGV, we can
give user processes a SIGSEGV, instead of possibly looping on pagefault
handling.

Since handle_segv() sikked arch_fixup() implicitly by passing ip==0 to segv(),
I changed segv() to call arch_fixup() only, if !is_user.

Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent ea66e8a
History
File Mode Size
Kconfig -rw-r--r-- 8.4 KB
Makefile -rw-r--r-- 1.1 KB
aes.c -rw-r--r-- 11.3 KB
anubis.c -rw-r--r-- 27.9 KB
api.c -rw-r--r-- 4.4 KB
arc4.c -rw-r--r-- 2.0 KB
blowfish.c -rw-r--r-- 17.3 KB
cast5.c -rw-r--r-- 34.6 KB
cast6.c -rw-r--r-- 22.8 KB
cipher.c -rw-r--r-- 8.5 KB
compress.c -rw-r--r-- 1.8 KB
crc32c.c -rw-r--r-- 2.4 KB
crypto_null.c -rw-r--r-- 3.3 KB
deflate.c -rw-r--r-- 5.4 KB
des.c -rw-r--r-- 38.8 KB
digest.c -rw-r--r-- 2.5 KB
hmac.c -rw-r--r-- 3.4 KB
internal.h -rw-r--r-- 2.4 KB
khazad.c -rw-r--r-- 52.4 KB
md4.c -rw-r--r-- 6.1 KB
md5.c -rw-r--r-- 7.1 KB
michael_mic.c -rw-r--r-- 3.4 KB
proc.c -rw-r--r-- 2.7 KB
scatterwalk.c -rw-r--r-- 2.8 KB
scatterwalk.h -rw-r--r-- 1.8 KB
serpent.c -rw-r--r-- 19.8 KB
sha1.c -rw-r--r-- 3.2 KB
sha256.c -rw-r--r-- 11.1 KB
sha512.c -rw-r--r-- 10.8 KB
tcrypt.c -rw-r--r-- 24.3 KB
tcrypt.h -rw-r--r-- 95.2 KB
tea.c -rw-r--r-- 4.9 KB
tgr192.c -rw-r--r-- 31.9 KB
twofish.c -rw-r--r-- 44.9 KB
wp512.c -rw-r--r-- 60.7 KB

back to top