]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitd541faa361a3a420194a394a80b5c94e4a88da6a
tree55a48cb0090bcf658c53affd7d740708e4678f43
parentf036efbc9125d996e791bb338aad65edcd49bc5c
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