On Wed, Mar 17, 2021 at 12:55:02PM +0530, Sumit Garg wrote: > > [ 0.000000] ------------[ cut here ]------------ > > [ 0.000000] unexpected static_call insn opcode 0xe9 at cleanup_trusted+0x0/0x5 > > Here 0xe9 belongs to JMP32_INSN_OPCODE but I am not sure why it's > considered incorrect given following snippet and corresponding > objdump: > > Snippet: > > static void __exit cleanup_trusted(void) > { > static_call_cond(trusted_key_exit)(); > } > > module_exit(cleanup_trusted); > > Objdump: > > ffffffff832d91fc : > ffffffff832d91fc: e9 ef 83 b2 fe jmpq > ffffffff81e015f0 <__SCT__trusted_key_exit> > > Maintainers, > > Do you have any clue here? It's an __exit function.. and we have: /* * .exit.text is discarded at runtime, not link time, to deal with * references from .altinstructions */ .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { EXIT_TEXT } So could it be the text is no longer actually there? We have special handling for __init, but I don't think we have anything for __exit.