Go to file
Steven Rostedt (VMware) 0598e4f08e ftrace: Add use of synchronize_rcu_tasks() with dynamic trampolines
The function tracer needs to be more careful than other subsystems when it
comes to freeing data. Especially if that data is actually executable code.
When a single function is traced, a trampoline can be dynamically allocated
which is called to jump to the function trace callback. When the callback is
no longer needed, the dynamic allocated trampoline needs to be freed. This
is where the issues arise. The dynamically allocated trampoline must not be
used again. As function tracing can trace all subsystems, including
subsystems that are used to serialize aspects of freeing (namely RCU), it
must take extra care when doing the freeing.

Before synchronize_rcu_tasks() was around, there was no way for the function
tracer to know that nothing was using the dynamically allocated trampoline
when CONFIG_PREEMPT was enabled. That's because a task could be indefinitely
preempted while sitting on the trampoline. Now with synchronize_rcu_tasks(),
it will wait till all tasks have either voluntarily scheduled (not on the
trampoline) or goes into userspace (not on the trampoline). Then it is safe
to free the trampoline even with CONFIG_PREEMPT set.

Acked-by: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2017-04-07 09:41:51 -04:00
arch ftrace/x86: Do no run CPU sync when there is only one CPU online 2017-03-28 12:35:16 -04:00
block blk-mq-sched: don't run the queue async from blk_mq_try_issue_directly() 2017-03-14 11:51:59 -06:00
certs
crypto net: Work around lockdep limitation in sockets that use sockets 2017-03-09 18:23:27 -08:00
Documentation tracing/kprobes: expose maxactive for kretprobe in kprobe_events 2017-04-04 10:32:03 -04:00
drivers Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2017-03-19 18:06:31 -07:00
firmware
fs NFS client fixes for 4.11 2017-03-17 14:16:22 -07:00
include ftrace: Have init/main.c call ftrace directly to free init memory 2017-04-03 14:04:00 -04:00
init ftrace: Have init/main.c call ftrace directly to free init memory 2017-04-03 14:04:00 -04:00
ipc
kernel ftrace: Add use of synchronize_rcu_tasks() with dynamic trampolines 2017-04-07 09:41:51 -04:00
lib
mm ftrace: Have init/main.c call ftrace directly to free init memory 2017-04-03 14:04:00 -04:00
net NFS client fixes for 4.11 2017-03-17 14:16:22 -07:00
samples
scripts ftrace: Allow for function tracing to record init functions on boot up 2017-03-24 20:51:49 -04:00
security
sound scripts/spelling.txt: add "disble(d)" pattern and fix typo instances 2017-03-09 17:01:09 -08:00
tools tracing/kprobes: expose maxactive for kretprobe in kprobe_events 2017-04-04 10:32:03 -04:00
usr
virt
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile Linux 4.11-rc3 2017-03-19 19:09:39 -07:00
README

Linux kernel
============

This file was moved to Documentation/admin-guide/README.rst

Please notice that there are several guides for kernel developers and users.
These guides can be rendered in a number of formats, like HTML and PDF.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
See Documentation/00-INDEX for a list of what is contained in each file.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.