mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
jump_label,module: Don't alloc static_key_mod for __ro_after_init keys
When a static_key is marked ro_after_init, its state will never change (after init), therefore jump_label_update() will never need to iterate the entries, and thus module load won't actually need to track this -- avoiding the static_key::next write. Therefore, mark these keys such that jump_label_add_module() might recognise them and avoid the modification. Use the special state: 'static_key_linked(key) && !static_key_mod(key)' to denote such keys. jump_label_add_module() does not exist under CONFIG_JUMP_LABEL=n, so the newly-introduced jump_label_init_ro() can be defined as a nop for that configuration. [ mingo: Renamed jump_label_ro() to jump_label_init_ro() ] Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Valentin Schneider <vschneid@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org> Link: https://lore.kernel.org/r/20240313180106.2917308-2-vschneid@redhat.com
This commit is contained in:
committed by
Ingo Molnar
parent
3774b28d8f
commit
91a1d97ef4
@@ -1408,6 +1408,7 @@ static void mark_readonly(void)
|
||||
* insecure pages which are W+X.
|
||||
*/
|
||||
flush_module_init_free_work();
|
||||
jump_label_init_ro();
|
||||
mark_rodata_ro();
|
||||
debug_checkwx();
|
||||
rodata_test();
|
||||
|
||||
Reference in New Issue
Block a user