Another Oops messages for FPU restore are as below:
<snip>
IP: [<c100bcbe>] __math_state_restore+0x5e/0x80
Oops: 0000 [#1] SMP
last sysfs file: /sys/module/serpent/initstate

<0> Call Trace:
? do_device_not_available+0x0/0x20
match_state_restore+0x39/0x50
do_device_not_available+0x10/0x20
error_code+0x67/0x6c
?flush_thread+0x3f/0x70
flush_old_exec+0x419/0x590
load_elf_binary+0x25c/0x1290
?default_spin_lock_flags+0x8/0x10
?_raw_spin_lock_flags+0x2f/0x50
?page_address+0xd3/0xe0
?default_spin_lock_flags+0x8/0x10
?_raw_spin_lock_flags+0x2f/0x50
?page_address+0xd3/0xe0
?kunmap_high+0x6f/0xa0
?_copy_from_user+0x44/0x70
search_binary_handler+0xb2/0x2b0
?load_elf_binary+0x0/0x1290
do_execve+0x37/0x70
ptregs_execve+0x12/0x18
?sysenter_do_call+0x12/0x28
</snip>

decodes
<snip>
0xc100bcbe in fxrstor_checking () at 
/linux-source-2.6.38/arch/x86/include/asm/i387.h:198
198             alternative_input(
(gdb) bt
#0  0xc100bcbe in fxrstor_checking () at 
/linux-source-2.6.38/arch/x86/include/asm/i387.h:198
#1  fpu_fxrstor_checking () at 
/linux-source-2.6.38/arch/x86/include/asm/i387.h:267
#2  fpu_restore_checking () at 
/linux-source-2.6.38/arch/x86/include/asm/i387.h:275
#3  restore_fpu_checking () at 
/linux-source-2.6.38/arch/x86/include/asm/i387.h:280
#4  __math_state_restore () at arch/x86/kernel/traps.c:826
#5  0xc100bd19 in math_state_restore () at arch/x86/kernel/traps.c:868
#6  0xc1523640 in do_device_not_available (regs=0xf0097e24, error_code=<value 
optimized out>) at arch/x86/kernel/traps.c:886
#7  <signal handler called>
#8  __clear_fpu () at /linux-source-2.6.38/arch/x86/include/asm/i387.h:302
#9  clear_fpu () at /linux-source-2.6.38/arch/x86/include/asm/i387.h:386
#10 flush_thread () at arch/x86/kernel/process.c:132
#11 0xc1132229 in flush_old_exec (bprm=0xf018d600) at fs/exec.c:1048
#12 0xc116bf1c in load_elf_binary (bprm=0xf018d600, regs=0xf0097fb4) at 
fs/binfmt_elf.c:711
#13 0xc11317d2 in search_binary_handler (bprm=0xf018d600, regs=0xf0097fb4) at 
fs/exec.c:1329
#14 0xc1132d2f in do_execve (filename=<value optimized out>, argv=0xbfef4074, 
envp=0xbfef407c, regs=0xf0097fb4) at fs/exec.c:1450
#15 0xc10128e7 in sys_execve (name=<value optimized out>, argv=0xbfef4074, 
envp=0xbfef407c, regs=0xf0097fb4) at arch/x86/kernel/process.c:320
#16 0xc100aaee in ?? () at arch/x86/kernel/entry_32.S:729
#17 <signal handler called>
#18 0xb78da424 in ?? ()
Cannot access memory at address 0xbfef3f64
(gdb)

Code: 2f 85 c9 75 2b 83 4b 0c 01 80 86 80 01 00 00 01 8b 1c 24 8b 74 24 04 8b 
7c 24 08 89 ec 5d c3 8d b6 00 00 00 00 8b 86 4c 03 00 00 <0f> ae 08 eb d5 e8 38 
76 02 00 90 83 c8 08 e8 3f 76 02 00 90 b8

root@dnsubuntu:/linux-source-2.6.38# echo "Code: 2f 85 c9 75 2b 83 4b 0c 01 80 
86 80 01 00 00 01 8b 1c 24 8b 74 24 04 8b 7c 24 08 89 ec 5d c3 8d b6 00 00 00 
00 8b 86 4c 03 00 00 <0f> ae 08 eb d5 e8 38 76 02 00 90 83 c8 08 e8 3f 76 02 00 
90 b8" | ./scripts/decodecode
Code: 2f 85 c9 75 2b 83 4b 0c 01 80 86 80 01 00 00 01 8b 1c 24 8b 74 24 04 8b 
7c 24 08 89 ec 5d c3 8d b6 00 00 00 00 8b 86 4c 03 00 00 <0f> ae 08 eb d5 e8 38 
76 02 00 90 83 c8 08 e8 3f 76 02 00 90 b8
All code
========
   0:   2f                      das
   1:   85 c9                   test   %ecx,%ecx
   3:   75 2b                   jne    0x30
   5:   83 4b 0c 01             orl    $0x1,0xc(%ebx)
   9:   80 86 80 01 00 00 01    addb   $0x1,0x180(%esi)
  10:   8b 1c 24                mov    (%esp),%ebx
  13:   8b 74 24 04             mov    0x4(%esp),%esi
  17:   8b 7c 24 08             mov    0x8(%esp),%edi
  1b:   89 ec                   mov    %ebp,%esp
  1d:   5d                      pop    %ebp
  1e:   c3                      ret
  1f:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
  25:   8b 86 4c 03 00 00       mov    0x34c(%esi),%eax
  2b:*  0f ae 08                fxrstor (%eax)     <-- trapping instruction
  2e:   eb d5                   jmp    0x5
  30:   e8 38 76 02 00          call   0x2766d
  35:   90                      nop
  36:   83 c8 08                or     $0x8,%eax
  39:   e8 3f 76 02 00          call   0x2767d
  3e:   90                      nop
  3f:   b8                      .byte 0xb8

Code starting with the faulting instruction
===========================================
   0:   0f ae 08                fxrstor (%eax)
   3:   eb d5                   jmp    0xffffffda
   5:   e8 38 76 02 00          call   0x27642
   a:   90                      nop
   b:   83 c8 08                or     $0x8,%eax
   e:   e8 3f 76 02 00          call   0x27652
  13:   90                      nop
  14:   b8                      .byte 0xb8
</snip>


Thanks & Regards

TimLee

Reply via email to