OSDN Git Service

x86/static_call: Fix __static_call_fixup()
authorPeter Zijlstra <peterz@infradead.org>
Wed, 16 Aug 2023 10:44:19 +0000 (12:44 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 17 Aug 2023 11:24:09 +0000 (13:24 +0200)
commit54097309620ef0dc2d7083783dc521c6a5fef957
treee12360560a5698d578a656e416cd68a234d8271e
parentdbf46008775516f7f25c95b7760041c286299783
x86/static_call: Fix __static_call_fixup()

Christian reported spurious module load crashes after some of Song's
module memory layout patches.

Turns out that if the very last instruction on the very last page of the
module is a 'JMP __x86_return_thunk' then __static_call_fixup() will
trip a fault and die.

And while the module rework made this slightly more likely to happen,
it's always been possible.

Fixes: ee88d363d156 ("x86,static_call: Use alternative RET encoding")
Reported-by: Christian Bricart <christian@bricart.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>
Link: https://lkml.kernel.org/r/20230816104419.GA982867@hirez.programming.kicks-ass.net
arch/x86/kernel/static_call.c