x86_64: fix ia32 AMD syscall audit fast-path

The new code in commit 5cbf1565f29eb57a86a305b08836613508e294d7
has a bug in the version supporting the AMD 'syscall' instruction.
It clobbers the user's %ecx register value (with the %ebp value).

This change fixes it.

Signed-off-by: Roland McGrath <roland@redhat.com>

+3 -3
+3 -3
arch/x86/ia32/ia32entry.S
··· 201 movl RDI-ARGOFFSET(%rsp),%r8d /* reload 5th syscall arg */ 202 .endm 203 204 - .macro auditsys_exit exit 205 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r10) 206 jnz int_ret_from_sys_call 207 TRACE_IRQS_ON ··· 214 call audit_syscall_exit 215 GET_THREAD_INFO(%r10) 216 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */ 217 - movl RBP-ARGOFFSET(%rsp),%ebp /* reload user register value */ 218 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi 219 cli 220 TRACE_IRQS_OFF ··· 347 jmp cstar_dispatch 348 349 sysretl_audit: 350 - auditsys_exit sysretl_from_sys_call 351 #endif 352 353 cstar_tracesys:
··· 201 movl RDI-ARGOFFSET(%rsp),%r8d /* reload 5th syscall arg */ 202 .endm 203 204 + .macro auditsys_exit exit,ebpsave=RBP 205 testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags(%r10) 206 jnz int_ret_from_sys_call 207 TRACE_IRQS_ON ··· 214 call audit_syscall_exit 215 GET_THREAD_INFO(%r10) 216 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */ 217 + movl \ebpsave-ARGOFFSET(%rsp),%ebp /* reload user register value */ 218 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi 219 cli 220 TRACE_IRQS_OFF ··· 347 jmp cstar_dispatch 348 349 sysretl_audit: 350 + auditsys_exit sysretl_from_sys_call, RCX /* user %ebp in RCX slot */ 351 #endif 352 353 cstar_tracesys: