lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 30 Aug 2018 04:06:55 -0700 From: tip-bot for Jiri Kosina <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: jkosina@...e.cz, hpa@...or.com, mingo@...nel.org, linux-kernel@...r.kernel.org, peterz@...radead.org, mhiramat@...nel.org, luto@...nel.org, tglx@...utronix.de Subject: [tip:x86/urgent] x86/alternatives: Lockdep-enforce text_mutex in text_poke*() Commit-ID: 9222f606506c5f8ca2c8b8c939d59ed3e6ac4148 Gitweb: https://git.kernel.org/tip/9222f606506c5f8ca2c8b8c939d59ed3e6ac4148 Author: Jiri Kosina <jkosina@...e.cz> AuthorDate: Tue, 28 Aug 2018 08:55:14 +0200 Committer: Thomas Gleixner <tglx@...utronix.de> CommitDate: Thu, 30 Aug 2018 13:02:30 +0200 x86/alternatives: Lockdep-enforce text_mutex in text_poke*() text_poke() and text_poke_bp() must be called with text_mutex held. Put proper lockdep anotation in place instead of just mentioning the requirement in a comment. Reported-by: Peter Zijlstra <peterz@...radead.org> Signed-off-by: Jiri Kosina <jkosina@...e.cz> Signed-off-by: Thomas Gleixner <tglx@...utronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@...radead.org> Acked-by: Masami Hiramatsu <mhiramat@...nel.org> Cc: Andy Lutomirski <luto@...nel.org> Link: https://lkml.kernel.org/r/nycvar.YFH.7.76.1808280853520.25787@cbobk.fhfr.pm --- arch/x86/kernel/alternative.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index 014f214da581..b9d5e7c9ef43 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -684,8 +684,6 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode, * It means the size must be writable atomically and the address must be aligned * in a way that permits an atomic write. It also makes sure we fit on a single * page. - * - * Note: Must be called under text_mutex. */ void *text_poke(void *addr, const void *opcode, size_t len) { @@ -700,6 +698,8 @@ void *text_poke(void *addr, const void *opcode, size_t len) */ BUG_ON(!after_bootmem); + lockdep_assert_held(&text_mutex); + if (!core_kernel_text((unsigned long)addr)) { pages[0] = vmalloc_to_page(addr); pages[1] = vmalloc_to_page(addr + PAGE_SIZE); @@ -782,8 +782,6 @@ int poke_int3_handler(struct pt_regs *regs) * - replace the first byte (int3) by the first byte of * replacing opcode * - sync cores - * - * Note: must be called under text_mutex. */ void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler) { @@ -792,6 +790,9 @@ void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler) bp_int3_handler = handler; bp_int3_addr = (u8 *)addr + sizeof(int3); bp_patching_in_progress = true; + + lockdep_assert_held(&text_mutex); + /* * Corresponding read barrier in int3 notifier for making sure the * in_progress and handler are correctly ordered wrt. patching.
Powered by blists - more mailing lists