OSDN Git Service

jump_label: Explicitly disable jump labels in __init code
authorJosh Poimboeuf <jpoimboe@redhat.com>
Tue, 20 Feb 2018 17:37:51 +0000 (11:37 -0600)
committerIngo Molnar <mingo@kernel.org>
Wed, 21 Feb 2018 15:54:05 +0000 (16:54 +0100)
commit33352244706369ea6736781ae41fe41692eb69bb
treec3ea4269b95e89e4594b2023e7167a2ba8b0fa59
parentf3d415ea46968ae1f9cbb9e201601d7207ce74c7
jump_label: Explicitly disable jump labels in __init code

After initmem has been freed, any jump labels in __init code are
prevented from being written to by the kernel_text_address() check in
__jump_label_update().  However, this check is quite broad.  If
kernel_text_address() were to return false for any other reason, the
jump label write would fail silently with no warning.

For jump labels in module init code, entry->code is set to zero to
indicate that the entry is disabled.  Do the same thing for core kernel
init code.  This makes the behavior more consistent, and will also make
it more straightforward to detect non-init jump label write failures in
the next patch.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Jason Baron <jbaron@akamai.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/c52825c73f3a174e8398b6898284ec20d4deb126.1519051220.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/jump_label.h
init/main.c
kernel/jump_label.c