Skip to content

Commit

Permalink
x86/entry/32: Remove the 0/-1 distinction from exception entries
Browse files Browse the repository at this point in the history
Nothing cares about the -1 "mark as interrupt" in the errorcode of
exception entries. It's only used to fill the error code when a signal is
delivered, but this is already inconsistent vs. 64 bit as there all
exceptions which do not have an error code set it to 0. So if 32 bit
applications would care about this, then they would have noticed more than
a decade ago.

Just use 0 for all excpetions which do not have an errorcode consistently.

This does neither break /proc/$PID/syscall because this interface examines
the error code / syscall number which is on the stack and that is set to -1
(no syscall) in common_exception unconditionally for all exceptions. The
push in the entry stub is just there to fill the hardware error code slot
on the stack for consistency of the stack layout.

A transient observation of 0 is possible, but that's true for the other
exceptions which use 0 already as well and that interface is an unreliable
snapshot of dubious correctness anyway.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
Link: https://lkml.kernel.org/r/87mu94m7ky.fsf@nanos.tec.linutronix.de
  • Loading branch information
Thomas Gleixner committed Feb 29, 2020
1 parent 65c668f commit e441a2a
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions arch/x86/entry/entry_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -1290,7 +1290,7 @@ SYM_CODE_END(simd_coprocessor_error)

SYM_CODE_START(device_not_available)
ASM_CLAC
pushl $-1 # mark this as an int
pushl $0
pushl $do_device_not_available
jmp common_exception
SYM_CODE_END(device_not_available)
Expand Down Expand Up @@ -1531,7 +1531,7 @@ SYM_CODE_START(debug)
* Entry from sysenter is now handled in common_exception
*/
ASM_CLAC
pushl $-1 # mark this as an int
pushl $0
pushl $do_debug
jmp common_exception
SYM_CODE_END(debug)
Expand Down Expand Up @@ -1682,7 +1682,7 @@ SYM_CODE_END(nmi)

SYM_CODE_START(int3)
ASM_CLAC
pushl $-1 # mark this as an int
pushl $0
pushl $do_int3
jmp common_exception
SYM_CODE_END(int3)
Expand Down

0 comments on commit e441a2a

Please sign in to comment.