summaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/kernel/signal.c')
-rw-r--r--arch/i386/kernel/signal.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c
index 32e7c4c56..cc9a992da 100644
--- a/arch/i386/kernel/signal.c
+++ b/arch/i386/kernel/signal.c
@@ -155,7 +155,7 @@ static inline int restore_i387_hard(struct _fpstate *buf)
{
struct task_struct *tsk = current;
clear_fpu(tsk);
- return __copy_from_user(&tsk->tss.i387.hard, buf, sizeof(*buf));
+ return __copy_from_user(&tsk->thread.i387.hard, buf, sizeof(*buf));
}
static inline int restore_i387(struct _fpstate *buf)
@@ -167,7 +167,7 @@ static inline int restore_i387(struct _fpstate *buf)
if (boot_cpu_data.hard_math)
err = restore_i387_hard(buf);
else
- err = restore_i387_soft(&current->tss.i387.soft, buf);
+ err = restore_i387_soft(&current->thread.i387.soft, buf);
#endif
current->used_math = 1;
return err;
@@ -308,8 +308,8 @@ static inline int save_i387_hard(struct _fpstate * buf)
struct task_struct *tsk = current;
unlazy_fpu(tsk);
- tsk->tss.i387.hard.status = tsk->tss.i387.hard.swd;
- if (__copy_to_user(buf, &tsk->tss.i387.hard, sizeof(*buf)))
+ tsk->thread.i387.hard.status = tsk->thread.i387.hard.swd;
+ if (__copy_to_user(buf, &tsk->thread.i387.hard, sizeof(*buf)))
return -1;
return 1;
}
@@ -328,7 +328,7 @@ static int save_i387(struct _fpstate *buf)
return save_i387_hard(buf);
#else
return boot_cpu_data.hard_math ? save_i387_hard(buf)
- : save_i387_soft(&current->tss.i387.soft, buf);
+ : save_i387_soft(&current->thread.i387.soft, buf);
#endif
}
@@ -354,8 +354,8 @@ setup_sigcontext(struct sigcontext *sc, struct _fpstate *fpstate,
err |= __put_user(regs->edx, &sc->edx);
err |= __put_user(regs->ecx, &sc->ecx);
err |= __put_user(regs->eax, &sc->eax);
- err |= __put_user(current->tss.trap_no, &sc->trapno);
- err |= __put_user(current->tss.error_code, &sc->err);
+ err |= __put_user(current->thread.trap_no, &sc->trapno);
+ err |= __put_user(current->thread.error_code, &sc->err);
err |= __put_user(regs->eip, &sc->eip);
err |= __put_user(regs->xcs, (unsigned int *)&sc->cs);
err |= __put_user(regs->eflags, &sc->eflags);
@@ -370,7 +370,7 @@ setup_sigcontext(struct sigcontext *sc, struct _fpstate *fpstate,
/* non-iBCS2 extensions.. */
err |= __put_user(mask, &sc->oldmask);
- err |= __put_user(current->tss.cr2, &sc->cr2);
+ err |= __put_user(current->thread.cr2, &sc->cr2);
return err;
}
@@ -687,12 +687,8 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset)
case SIGQUIT: case SIGILL: case SIGTRAP:
case SIGABRT: case SIGFPE: case SIGSEGV:
- lock_kernel();
- if (current->binfmt
- && current->binfmt->core_dump
- && current->binfmt->core_dump(signr, regs))
+ if (do_coredump(signr, regs))
exit_code |= 0x80;
- unlock_kernel();
/* FALLTHRU */
default: