linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/6] x86: text_poke() fixes
@ 2018-08-29  8:11 Nadav Amit
  2018-08-29  8:11 ` [RFC PATCH 1/6] x86/alternative: assert text_mutex is taken Nadav Amit
                   ` (5 more replies)
  0 siblings, 6 replies; 34+ messages in thread
From: Nadav Amit @ 2018-08-29  8:11 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-kernel, Ingo Molnar, x86, Arnd Bergmann, linux-arch,
	Nadav Amit, Andy Lutomirski, Masami Hiramatsu, Kees Cook,
	Peter Zijlstra

This patch-set addresses some issues that were raised in the recent
correspondence and might affect the security and the correctness of code
patching. (Note that patching performance is not addressed by this
patch-set).

The main issue that the patches deal with is the fact that the fixmap
PTEs that are used for patching are available for access from other
cores and might be exploited. They are not even flushed from the TLB in
remote cores, so the risk is even higher. Address this issue by
introducing a temporary mm that is only used during patching.
Unfortunately, due to init ordering, fixmap is still used during
boot-time patching. Future patches can eliminate the need for it.

The second issue is the missing lockdep assertion to ensure text_mutex
is taken. It is actually not always taken, so fix the instances that
were found not to take the lock (although they should be safe even
without taking the lock).

Finally, try to be more conservative and to map a single page, instead
of two, when possible. This helps both security and performance.

In addition, there is some cleanup of the patching code to make it more
readable.

[ Andy: please provide your SOB for your patch ]

Cc: Andy Lutomirski <luto@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Peter Zijlstra <peterz@infradead.org>

Andy Lutomirski (1):
  x86/mm: temporary mm struct

Nadav Amit (5):
  x86/alternative: assert text_mutex is taken
  fork: provide a function for copying init_mm
  x86/alternatives: initializing temporary mm for patching
  x86/alternatives: use temporary mm for text poking
  x86/alternatives: remove text_poke() return value

 arch/x86/include/asm/mmu_context.h   |  20 ++++
 arch/x86/include/asm/pgtable.h       |   4 +
 arch/x86/include/asm/text-patching.h |   4 +-
 arch/x86/kernel/alternative.c        | 157 +++++++++++++++++++++++----
 arch/x86/kernel/kgdb.c               |   9 ++
 arch/x86/mm/init_64.c                |  35 ++++++
 include/asm-generic/pgtable.h        |   4 +
 include/linux/sched/task.h           |   1 +
 init/main.c                          |   1 +
 kernel/fork.c                        |  24 +++-
 10 files changed, 230 insertions(+), 29 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2018-08-31  4:42 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-29  8:11 [RFC PATCH 0/6] x86: text_poke() fixes Nadav Amit
2018-08-29  8:11 ` [RFC PATCH 1/6] x86/alternative: assert text_mutex is taken Nadav Amit
2018-08-29  8:59   ` Masami Hiramatsu
2018-08-29 17:11     ` Nadav Amit
2018-08-29 19:36       ` Nadav Amit
2018-08-29 20:13         ` Sean Christopherson
2018-08-29 20:44           ` Nadav Amit
2018-08-29 21:00             ` Sean Christopherson
2018-08-29 22:56               ` Nadav Amit
2018-08-30  2:26               ` Masami Hiramatsu
2018-08-30  5:23                 ` Nadav Amit
2018-08-29  8:11 ` [RFC PATCH 2/6] x86/mm: temporary mm struct Nadav Amit
2018-08-29  9:49   ` Masami Hiramatsu
2018-08-29 15:41     ` Andy Lutomirski
2018-08-29 16:54       ` Nadav Amit
2018-08-29 21:38         ` Andy Lutomirski
2018-08-30  1:38       ` Masami Hiramatsu
2018-08-30  1:59         ` Andy Lutomirski
2018-08-31  4:42           ` Masami Hiramatsu
2018-08-29 15:46   ` Andy Lutomirski
2018-08-29  8:11 ` [RFC PATCH 3/6] fork: provide a function for copying init_mm Nadav Amit
2018-08-29  9:54   ` Masami Hiramatsu
2018-08-29  8:11 ` [RFC PATCH 4/6] x86/alternatives: initializing temporary mm for patching Nadav Amit
2018-08-29 13:21   ` Masami Hiramatsu
2018-08-29 17:45     ` Nadav Amit
2018-08-29  8:11 ` [RFC PATCH 5/6] x86/alternatives: use temporary mm for text poking Nadav Amit
2018-08-29  9:28   ` Peter Zijlstra
2018-08-29 15:46     ` Andy Lutomirski
2018-08-29 16:14       ` Peter Zijlstra
2018-08-29 16:32         ` Andy Lutomirski
2018-08-29 16:37           ` Dave Hansen
2018-08-29  8:11 ` [RFC PATCH 6/6] x86/alternatives: remove text_poke() return value Nadav Amit
2018-08-29  9:52   ` Masami Hiramatsu
2018-08-29 17:15     ` Nadav Amit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).