Re: [PATCH] x86/mm: Drop TS_COMPAT on 64-bit exec() syscall
From: Dmitry Safonov
Date: Fri May 18 2018 - 21:38:04 EST
2018-05-19 3:25 GMT+01:00 Dmitry Safonov <0x7f454c46@xxxxxxxxx>:
>> Here is the function:
>> 0000000000400842 <call32_from_64>:
>> 400842: 53 push %rbx
>> 400843: 55 push %rbp
>> 400844: 41 54 push %r12
>> 400846: 41 55 push %r13
>> 400848: 41 56 push %r14
>> 40084a: 41 57 push %r15
>> 40084c: 9c pushfq
>> 40084d: 48 89 27 mov %rsp,(%rdi)
>> 400850: 48 89 fc mov %rdi,%rsp
>> 400853: 6a 23 pushq $0x23
>> 400855: 68 5c 08 40 00 pushq $0x40085c
>> 40085a: 48 cb lretq
>> 40085c: ff d6 callq *%rsi
>> 40085e: ea (bad)
>> 40085f: 65 08 40 00 or %al,%gs:0x0(%rax)
>> 400863: 33 00 xor (%rax),%eax
>> 400865: 48 8b 24 24 mov (%rsp),%rsp
>> 400869: 9d popfq
>> 40086a: 41 5f pop %r15
>> 40086c: 41 5e pop %r14
>> 40086e: 41 5d pop %r13
>> 400870: 41 5c pop %r12
>> 400872: 5d pop %rbp
>> 400873: 5b pop %rbx
>> 400874: c3 retq
>> 400875: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
>> 40087c: 00 00 00
>> 40087f: 90 nop
>>
>> Looks like mov between registers caused it? The hell.
>
> Oh, it's not 400850, I missloked, but 40085a so lretq might case it.
But it's
002b:00000000417bafe8
USER_DS and sensible address, still no idea.
--
Dmitry