powerpc/code-patching: Use WARN_ON and fix check in poking_init
BUG_ON() when failing to initialise the code patching window is unnecessary, and use of BUG_ON is discouraged. We don't set poking_init_done in this case, so failure to init the boot CPU will result in a strict RWX error when a following patch_instruction uses raw_patch_instruction. If it only fails for later CPUs, they won't be onlined in the first place. The return value of cpuhp_setup_state() is also >= 0 on success, so check for < 0. Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20221109045112.187069-3-bgray@linux.ibm.com
This commit is contained in:
parent
3671f4ebe3
commit
071c95c1ac
@ -81,16 +81,17 @@ static int text_area_cpu_down(unsigned int cpu)
|
||||
|
||||
static __ro_after_init DEFINE_STATIC_KEY_FALSE(poking_init_done);
|
||||
|
||||
/*
|
||||
* Although BUG_ON() is rude, in this case it should only happen if ENOMEM, and
|
||||
* we judge it as being preferable to a kernel that will crash later when
|
||||
* someone tries to use patch_instruction().
|
||||
*/
|
||||
void __init poking_init(void)
|
||||
{
|
||||
BUG_ON(!cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
|
||||
"powerpc/text_poke:online", text_area_cpu_up,
|
||||
text_area_cpu_down));
|
||||
int ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
|
||||
"powerpc/text_poke:online",
|
||||
text_area_cpu_up,
|
||||
text_area_cpu_down);
|
||||
|
||||
/* cpuhp_setup_state returns >= 0 on success */
|
||||
if (WARN_ON(ret < 0))
|
||||
return;
|
||||
|
||||
static_branch_enable(&poking_init_done);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user