On Wed, Jul 10, 2024 at 12:06:47PM -0700, Pawan Gupta wrote:
+/*
- Safer version of CLEAR_CPU_BUFFERS that uses %ss to reference VERW operand
- mds_verw_sel. This ensures VERW will not #GP for an arbitrary user %ds.
- */
+.macro CLEAR_CPU_BUFFERS_SAFE
- ALTERNATIVE "jmp .Lskip_verw@", "", X86_FEATURE_CLEAR_CPU_BUF
- verw %ss:_ASM_RIP(mds_verw_sel)
+.Lskip_verw@: +.endm
I know this is somewhat of a common pattern, but I think it is silly in this case. Since we already have the ALTERNATIVE() why not NOP the one VERW instruction instead?
That is,
ALTERNATIVE("", "verw %ss:_ASM_RIP(mds_verw_sel)", X86_FEATURE_CLEAR_CPU_BUF)
and call it a day?