Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

i#6417: Handle AMD 32-bit syscall instruction. #6464

Merged
merged 3 commits into from
Nov 20, 2023

Conversation

ivankyluk
Copy link
Contributor

@ivankyluk ivankyluk commented Nov 17, 2023

Handle AMD 32-bit syscall instruction.

The fix is to check for AMD 32-bit SYSCALL in is_at_do_syscall().

Here's more details:

CI x86-32 signalNNNN tests started failing recently. After checking the log, the failures happen on AMD 32-bit system.
Based on the debug logs

AMD:

0xf7f90583 89 cd mov %ecx -> %ebp
0xf7f90585 0f 05 syscall -> %ecx
interp: syscall @ 0xf7f90585
instr_get_opcode(instr): 95
change_prot(0xf7f90000, 0x2000, rwx) => mprotect(0xf7f90000, 0x2000, 7)==2 pages
change_prot(0xf7f90000, 0x2000, r-x) => mprotect(0xf7f90000, 0x2000, 5)==2 pages
set_syscall_method to 3make_writable: pc 0x441fc000 -> 0x441fc000-0x441fe000 0
Just updated syscall routine:
0x441fd240 0f 05 syscall -> %ecx
0x441fd242 a3 5c 29 18 44 mov %eax -> 0x4418295c[4byte]

whereas Intel uses sysenter, and set the syscall_method to SYSCALL_METHOD_SYSENTER:

0xf7f71583 89 e5 mov %esp -> %ebp
0xf7f71585 0f 34 sysenter -> %esp
interp: syscall @ 0xf7f71585
change_prot(0xf7f71000, 0x2000, rwx) => mprotect(0xf7f71000, 0x2000, 7)==2 pages
change_prot(0xf7f71000, 0x2000, r-x) => mprotect(0xf7f71000, 0x2000, 5)==2 pages
set_syscall_method to 2make_writable: pc 0x4845a000 -> 0x4845a000-0x4845c000 0
Just updated syscall routine:
0x4845b240 0f 34 sysenter -> %esp
0x4845b242 a3 5c 09 3e 48 mov %eax -> 0x483e095c[4byte]

Issue: #6417

core/synch.c Show resolved Hide resolved
@derekbruening derekbruening merged commit 2d13fe3 into master Nov 20, 2023
12 of 15 checks passed
@derekbruening derekbruening deleted the i6417-handle-amd-32-bit-syscall-instruction branch November 20, 2023 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants