Re: [PATCH] [v2] x86/fpu: Delay instruction pointer fixup until after warning

From: Chang S. Bae
Date: Thu Jun 26 2025 - 08:05:45 EST


On 6/25/2025 6:01 AM, Dave Hansen wrote:

Right now, if XRSTOR fails a console message like this is be printed:

Bad FPU state detected at restore_fpregs_from_fpstate+0x9a/0x170, reinitializing FPU registers.

However, the text location (...+0x9a in this case) is the instruction
*AFTER* the XRSTOR. The highlighted instruction in the "Code:" dump
also points one instruction late.

The reason is that the "fixup" moves RIP up to pass the bad XRSTOR and
keep on running after returning from the #GP handler. But it does this
fixup before warning.

The resulting warning output is nonsensical because it looks like the
non-FPU-related instruction is #GP'ing.

Do not fix up RIP until after printing the warning. Do this by using> the more generic and standard ex_handler_default().

Indeed, the fix looks obvious and correct.

Also, the trick you previously shared for reproducing the fault is very useful for testing cases like this.

I would be happy to provide my tag:
Reviewed-by: Chang S. Bae <chang.seok.bae@xxxxxxxxx>

Thanks,
Chang