kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y
authorMasami Hiramatsu <mhiramat@kernel.org>
Thu, 19 Oct 2017 23:43:39 +0000 (08:43 +0900)
committerIngo Molnar <mingo@kernel.org>
Fri, 20 Oct 2017 07:45:15 +0000 (09:45 +0200)
commita30b85df7d599f626973e9cd3056fe755bd778e0
tree55a48cb0090bcf658c53affd7d740708e4678f43
parent4f3a871443669c6b4d458a60ac8d8ca5eedc3f97
kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y

We want to wait for all potentially preempted kprobes trampoline
execution to have completed. This guarantees that any freed
trampoline memory is not in use by any task in the system anymore.
synchronize_rcu_tasks() gives such a guarantee, so use it.

Also, this guarantees to wait for all potentially preempted tasks
on the instructions which will be replaced with a jump.

Since this becomes a problem only when CONFIG_PREEMPT=y, enable
CONFIG_TASKS_RCU=y for synchronize_rcu_tasks() in that case.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: Paul E . McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/150845661962.5443.17724352636247312231.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/Kconfig
kernel/kprobes.c