diff options
| author | Rabin Vincent <[email protected]> | 2014-04-24 23:28:57 +0200 |
|---|---|---|
| committer | Kees Cook <[email protected]> | 2014-10-16 14:38:53 -0700 |
| commit | ab0615e2d6fb074764a3e4d05f1326fa2fdb4627 (patch) | |
| tree | 50f160291b6102404b8482c29247099eaf1e68a8 /arch/arm/kernel/patch.h | |
| parent | 99b4ac9afce4129323b5b4c7002a942a9489914c (diff) | |
arm: use fixmap for text patching when text is RO
Use fixmaps for text patching when the kernel text is read-only,
inspired by x86. This makes jump labels and kprobes work with the
currently available CONFIG_DEBUG_SET_MODULE_RONX and the upcoming
CONFIG_DEBUG_RODATA options.
Signed-off-by: Rabin Vincent <[email protected]>
[kees: fixed up for merge with "arm: use generic fixmap.h"]
[kees: added parse acquire/release annotations to pass C=1 builds]
[kees: always use stop_machine to keep TLB flushing local]
Signed-off-by: Kees Cook <[email protected]>
Acked-by: Nicolas Pitre <[email protected]>
Diffstat (limited to 'arch/arm/kernel/patch.h')
| -rw-r--r-- | arch/arm/kernel/patch.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/kernel/patch.h b/arch/arm/kernel/patch.h index b4731f2dac38..77e054c2f6cd 100644 --- a/arch/arm/kernel/patch.h +++ b/arch/arm/kernel/patch.h @@ -2,6 +2,16 @@ #define _ARM_KERNEL_PATCH_H void patch_text(void *addr, unsigned int insn); -void __patch_text(void *addr, unsigned int insn); +void __patch_text_real(void *addr, unsigned int insn, bool remap); + +static inline void __patch_text(void *addr, unsigned int insn) +{ + __patch_text_real(addr, insn, true); +} + +static inline void __patch_text_early(void *addr, unsigned int insn) +{ + __patch_text_real(addr, insn, false); +} #endif |