jump_label: Fix jump_label_text_reserved() vs __init
authorPeter Zijlstra <peterz@infradead.org>
Mon, 28 Jun 2021 11:24:10 +0000 (13:24 +0200)
committerIngo Molnar <mingo@kernel.org>
Mon, 5 Jul 2021 08:46:20 +0000 (10:46 +0200)
commit9e667624c291753b8a5128f620f493d0b5226063
tree4b2c79e55dfcb10b406684c074ecc08cf3815b29
parent4840ce2267f9d887f333d88a037c82c566f84081
jump_label: Fix jump_label_text_reserved() vs __init

It turns out that jump_label_text_reserved() was reporting __init text
as being reserved past the time when the __init text was freed and
re-used.

For a long time, this resulted in, at worst, not being able to kprobe
text that happened to land at the re-used address. However a recent
commit e7bf1ba97afd ("jump_label, x86: Emit short JMP") made it a
fatal mistake because it now needs to read the instruction in order to
determine the conflict -- an instruction that's no longer there.

Fixes: 4c3ef6d79328 ("jump label: Add jump_label_text_reserved() to reserve jump points")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Link: https://lore.kernel.org/r/20210628113045.045141693@infradead.org
kernel/jump_label.c