• Peter Zijlstra's avatar
    objtool/x86: Fix SRSO mess · 4ae68b26
    Peter Zijlstra authored
    Objtool --rethunk does two things:
    
     - it collects all (tail) call's of __x86_return_thunk and places them
       into .return_sites. These are typically compiler generated, but
       RET also emits this same.
    
     - it fudges the validation of the __x86_return_thunk symbol; because
       this symbol is inside another instruction, it can't actually find
       the instruction pointed to by the symbol offset and gets upset.
    
    Because these two things pertained to the same symbol, there was no
    pressing need to separate these two separate things.
    
    However, alas, along comes SRSO and more crazy things to deal with
    appeared.
    
    The SRSO patch itself added the following symbol names to identify as
    rethunk:
    
      'srso_untrain_ret', 'srso_safe_ret' and '__ret'
    
    Where '__ret' is the old retbleed return thunk, 'srso_safe_ret' is a
    new similarly embedded return thunk, and 'srso_untrain_ret' is
    completely unrelated to anything the above does (and was only included
    because of that INT3 vs UD2 issue fixed previous).
    
    Clear things up by adding a second category for the embedded instruction
    thing.
    
    Fixes: fb3bd914 ("x86/srso: Add a Speculative RAS Overflow mitigation")
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20230814121148.704502245@infradead.org
    4ae68b26
elf.h 8.89 KB