]> git.karo-electronics.de Git - karo-tx-linux.git/commit
x86, math-emu: fix init_fpu for task != current
authorDaniel Glöckner <dg@emlix.com>
Wed, 4 Mar 2009 18:42:27 +0000 (19:42 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 4 Mar 2009 19:33:16 +0000 (20:33 +0100)
commitab9e18587f4cdb5f3fb3854c732f27a36f98e8f6
treeb8d77d5fbdbdf919e4c0134762ff36ef11626802
parentdd39ecf522ba86c70809715af46e6557f6491131
x86, math-emu: fix init_fpu for task != current

Impact: fix math-emu related crash while using GDB/ptrace

init_fpu() calls finit to initialize a task's xstate, while finit always
works on the current task. If we use PTRACE_GETFPREGS on another
process and both processes did not already use floating point, we get
a null pointer exception in finit.

This patch creates a new function finit_task that takes a task_struct
parameter. finit becomes a wrapper that simply calls finit_task with
current. On the plus side this avoids many calls to get_current which
would each resolve to an inline assembler mov instruction.

An empty finit_task has been added to i387.h to avoid linker errors in
case the compiler still emits the call in init_fpu when
CONFIG_MATH_EMULATION is not defined.

The declaration of finit in i387.h has been removed as the remaining
code using this function gets its prototype from fpu_proto.h.

Signed-off-by: Daniel Glöckner <dg@emlix.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "Pallipadi Venkatesh" <venkatesh.pallipadi@intel.com>
Cc: Arjan van de Ven <arjan@infradead.org>
Cc: Bill Metzenthen <billm@melbpc.org.au>
LKML-Reference: <E1Lew31-0004il-Fg@mailer.emlix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/i387.h
arch/x86/kernel/i387.c
arch/x86/math-emu/fpu_aux.c