On 9/28/20 11:12 AM, Andy Lutomirski wrote: >> endbr64 >> /* Check if shadow stack is in use. NB: R11 is the only usable >> scratch register for function calls. */ >> xorl %r11d, %r11d >> rdsspq %r11 >> testq %r11, %r11 >> jnz 3f >> call 2f >> 1: >> pause >> lfence >> jmp 1b >> 2: >> mov %rax, (%rsp) >> ret >> 3: >> /* Shadow stack is in use. Make the indirect call. */ >> call *%rax >> ret > What do we expect user programs to do on CET systems? It would be > nice if we could instead ALTERNATIVE this out if X86_FEATURE_SHSTK. Shouldn't we just be able to use X86_FEATURE_RETPOLINE? We probably need a mechanism to force X86_FEATURE_SHSTK and X86_FEATURE_RETPOLINE to be mutually exclusive if we don't have one already.