Commit e441a2ae authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86/entry/32: Remove the 0/-1 distinction from exception entries



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: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarAlexandre Chartre <alexandre.chartre@oracle.com>
Link: https://lkml.kernel.org/r/87mu94m7ky.fsf@nanos.tec.linutronix.de
parent 65c668f5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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)
@@ -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)
@@ -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)