Commit 4e57fdd1 authored by Sohil Mehta's avatar Sohil Mehta Committed by Dave Hansen
Browse files

x86/traps: Consolidate user fixups in the #GP handler



Move the UMIP exception fixup under the common "if (user_mode(regs))"
condition where the rest of user mode fixups reside. Also, move the UMIP
feature check into its fixup function to keep the calling code
consistent and clean.

No functional change intended.

Suggested-by: default avatarDave Hansen <dave.hansen@intel.com>
Signed-off-by: default avatarSohil Mehta <sohil.mehta@intel.com>
Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: default avatarH. Peter Anvin (Intel) <hpa@zytor.com>
Acked-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
Tested-by: default avatarMaciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Link: https://patch.msgid.link/20260309181029.398498-3-sohil.mehta@intel.com
parent 3ddd2e12
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -921,11 +921,6 @@ DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)

	cond_local_irq_enable(regs);

	if (static_cpu_has(X86_FEATURE_UMIP)) {
		if (user_mode(regs) && fixup_umip_exception(regs))
			goto exit;
	}

	if (v8086_mode(regs)) {
		local_irq_enable();
		handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
@@ -940,6 +935,9 @@ DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
		if (fixup_vdso_exception(regs, X86_TRAP_GP, error_code, 0))
			goto exit;

		if (fixup_umip_exception(regs))
			goto exit;

		gp_user_force_sig_segv(regs, X86_TRAP_GP, error_code, desc);
		goto exit;
	}
+3 −0
Original line number Diff line number Diff line
@@ -354,6 +354,9 @@ bool fixup_umip_exception(struct pt_regs *regs)
	void __user *uaddr;
	struct insn insn;

	if (!cpu_feature_enabled(X86_FEATURE_UMIP))
		return false;

	if (!regs)
		return false;