lkml.org 
[lkml]   [2021]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 143/172] kvm: fix objtool relocation warning
    Date
    From: Linus Torvalds <torvalds@linux-foundation.org>

    [ Upstream commit 291073a566b2094c7192872cc0f17ce73d83cb76 ]

    The recent change to make objtool aware of more symbol relocation types
    (commit 24ff65257375: "objtool: Teach get_alt_entry() about more
    relocation types") also added another check, and resulted in this
    objtool warning when building kvm on x86:

    arch/x86/kvm/emulate.o: warning: objtool: __ex_table+0x4: don't know how to handle reloc symbol type: kvm_fastop_exception

    The reason seems to be that kvm_fastop_exception() is marked as a global
    symbol, which causes the relocation to ke kept around for objtool. And
    at the same time, the kvm_fastop_exception definition (which is done as
    an inline asm statement) doesn't actually set the type of the global,
    which then makes objtool unhappy.

    The minimal fix is to just not mark kvm_fastop_exception as being a
    global symbol. It's only used in that one compilation unit anyway, so
    it was always pointless. That's how all the other local exception table
    labels are done.

    I'm not entirely happy about the kinds of games that the kvm code plays
    with doing its own exception handling, and the fact that it confused
    objtool is most definitely a symptom of the code being a bit too subtle
    and ad-hoc. But at least this trivial one-liner makes objtool no longer
    upset about what is going on.

    Fixes: 24ff65257375 ("objtool: Teach get_alt_entry() about more relocation types")
    Link: https://lore.kernel.org/lkml/CAHk-=wiZwq-0LknKhXN4M+T8jbxn_2i9mcKpO+OaBSSq_Eh7tg@mail.gmail.com/
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: Wanpeng Li <wanpengli@tencent.com>
    Cc: Jim Mattson <jmattson@google.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/kvm/emulate.c | 1 -
    1 file changed, 1 deletion(-)

    diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
    index 2837110e66ed..50050d06672b 100644
    --- a/arch/x86/kvm/emulate.c
    +++ b/arch/x86/kvm/emulate.c
    @@ -435,7 +435,6 @@ static int fastop(struct x86_emulate_ctxt *ctxt, fastop_t fop);
    __FOP_RET(#op)

    asm(".pushsection .fixup, \"ax\"\n"
    - ".global kvm_fastop_exception \n"
    "kvm_fastop_exception: xor %esi, %esi; ret\n"
    ".popsection");

    --
    2.33.0


    \
     
     \ /
      Last update: 2021-10-04 15:40    [W:2.710 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site