diff options
author | Roland McGrath <roland@redhat.com> | 2008-06-30 17:02:41 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-01 05:03:31 -0400 |
commit | 45fdc3a7624a4a48185a04ae0abab5f9793d8952 (patch) | |
tree | 1f741448802f07a88479a2d4266cda9b875756da /arch/x86/kernel/ptrace.c | |
parent | e1441b9a41c33aa9236008a7cfe49a8e723fb397 (diff) |
x86 ptrace: fix PTRACE_GETFPXREGS error
ptrace has always returned only -EIO for all failures to access
registers. The user_regset calls are allowed to return a more
meaningful variety of errors. The REGSET_XFP calls use -ENODEV
for !cpu_has_fxsr hardware. Make ptrace return the traditional
-EIO instead of the error code from the user_regset call.
Signed-off-by: Roland McGrath <roland@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/ptrace.c')
-rw-r--r-- | arch/x86/kernel/ptrace.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index a7835f282936..77040b6070e1 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -943,13 +943,13 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
943 | return copy_regset_to_user(child, &user_x86_32_view, | 943 | return copy_regset_to_user(child, &user_x86_32_view, |
944 | REGSET_XFP, | 944 | REGSET_XFP, |
945 | 0, sizeof(struct user_fxsr_struct), | 945 | 0, sizeof(struct user_fxsr_struct), |
946 | datap); | 946 | datap) ? -EIO : 0; |
947 | 947 | ||
948 | case PTRACE_SETFPXREGS: /* Set the child extended FPU state. */ | 948 | case PTRACE_SETFPXREGS: /* Set the child extended FPU state. */ |
949 | return copy_regset_from_user(child, &user_x86_32_view, | 949 | return copy_regset_from_user(child, &user_x86_32_view, |
950 | REGSET_XFP, | 950 | REGSET_XFP, |
951 | 0, sizeof(struct user_fxsr_struct), | 951 | 0, sizeof(struct user_fxsr_struct), |
952 | datap); | 952 | datap) ? -EIO : 0; |
953 | #endif | 953 | #endif |
954 | 954 | ||
955 | #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION | 955 | #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION |