Erica Bugden
82fbc8c48a
ftrace: Add missing check for existing hwlat thread
...
The hwlat tracer uses a kernel thread to measure latencies. The function
that creates this kernel thread, start_kthread(), can be called when the
tracer is initialized and when the tracer is explicitly enabled.
start_kthread() does not check if there is an existing hwlat kernel
thread and will create a new one each time it is called.
This causes the reference to the previous thread to be lost. Without the
thread reference, the old kernel thread becomes unstoppable and
continues to use CPU time even after the hwlat tracer has been disabled.
This problem can be observed when a system is booted with tracing
enabled and the hwlat tracer is configured like this:
echo hwlat > current_tracer; echo 1 > tracing_on
Add the missing check for an existing kernel thread in start_kthread()
to prevent this problem. This function and the rest of the hwlat kernel
thread setup and teardown are already serialized because they are called
through the tracer core code with trace_type_lock held.
[
Note, this only fixes the symptom. The real fix was not to call
this function when tracing_on was already one. But this still makes
the code more robust, so we'll add it.
]
Link: http://lkml.kernel.org/r/1533120354-22923-1-git-send-email-erica.bugden@linutronix.de
Signed-off-by: Erica Bugden <erica.bugden@linutronix.de>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2018-08-01 16:04:24 -04:00
..
bpf
bpf: don't leave partial mangled prog in jit_subprogs error path
2018-07-12 14:00:54 -07:00
cgroup
docs: Fix some broken references
2018-06-15 18:10:01 -03:00
configs
kconfig: tinyconfig: remove stale stack protector fixups
2018-06-15 07:15:28 +09:00
debug
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
dma
swiotlb: export swiotlb_dma_ops
2018-06-28 14:00:40 +02:00
events
perf/core: Move inline keyword at the beginning of declaration
2018-06-27 09:55:58 +02:00
gcov
gcov: remove CONFIG_GCOV_FORMAT_AUTODETECT
2018-06-08 18:56:02 +09:00
irq
genirq/debugfs: Add missing IRQCHIP_SUPPORTS_LEVEL_MSI debug
2018-06-22 14:22:00 +02:00
livepatch
livepatch: Allow to call a custom callback when freeing shadow variables
2018-04-17 13:42:48 +02:00
locking
tracing: Centralize preemptirq tracepoints and unify their usage
2018-07-31 11:32:27 -04:00
power
fix a series of Documentation/ broken file name references
2018-06-15 18:10:01 -03:00
printk
Printk changes for 4.18
2018-06-06 16:04:55 -07:00
rcu
treewide: Use array_size() in vmalloc()
2018-06-12 16:19:22 -07:00
sched
tracing: Centralize preemptirq tracepoints and unify their usage
2018-07-31 11:32:27 -04:00
time
Revert "tick: Prefer a lower rating device only if it's CPU local device"
2018-07-10 22:12:47 +02:00
trace
ftrace: Add missing check for existing hwlat thread
2018-08-01 16:04:24 -04:00
.gitignore
acct.c
async.c
kernel/async.c: revert "async: simplify lowest_in_progress()"
2018-02-06 18:32:44 -08:00
audit.c
audit: use inline function to get audit context
2018-05-14 17:24:18 -04:00
audit.h
audit: track the owner of the command mutex ourselves
2018-02-23 11:22:22 -05:00
audit_fsnotify.c
fsnotify: add fsnotify_add_inode_mark() wrappers
2018-05-18 14:58:22 +02:00
audit_tree.c
fsnotify: add fsnotify_add_inode_mark() wrappers
2018-05-18 14:58:22 +02:00
audit_watch.c
\n
2018-06-17 05:06:18 +09:00
auditfilter.c
audit: use existing session info function
2018-05-18 15:47:54 -04:00
auditsc.c
audit: Fix wrong task in comparison of session ID
2018-05-21 14:27:43 -04:00
backtracetest.c
bounds.c
capability.c
compat.c
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-06-04 20:27:54 -07:00
configs.c
context_tracking.c
cpu.c
cpu/hotplug: Fix unused function warning
2018-03-15 20:34:40 +01:00
cpu_pm.c
crash_core.c
mm: split page_type out from _mapcount
2018-06-07 17:34:37 -07:00
crash_dump.c
cred.c
delayacct.c
delayacct: Use raw_spinlocks
2018-04-27 14:34:51 +02:00
dma.c
proc: introduce proc_create_single{,_data}
2018-05-16 07:23:35 +02:00
elfcore.c
exec_domain.c
proc: introduce proc_create_single{,_data}
2018-05-16 07:23:35 +02:00
exit.c
kernel: use kernel_wait4() instead of sys_wait4()
2018-04-02 20:14:51 +02:00
extable.c
extable: Make init_kernel_text() global
2018-02-21 16:54:06 +01:00
fail_function.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
fork.c
mm: make vm_area_alloc() initialize core fields
2018-07-21 15:24:03 -07:00
freezer.c
futex.c
pids: introduce find_get_task_by_vpid() helper
2018-02-06 18:32:46 -08:00
futex_compat.c
groups.c
hung_task.c
kernel/hung_task.c: show all hung tasks before panic
2018-06-07 17:34:39 -07:00
iomem.c
memremap: split devm_memremap_pages() and memremap() infrastructure
2018-05-15 23:08:33 -07:00
irq_work.c
jump_label.c
jump_label: Disable jump labels in __exit code
2018-03-20 08:57:17 +01:00
kallsyms.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk
2018-02-01 13:36:15 -08:00
kcmp.c
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kcov.c
sched/core / kcov: avoid kcov_area during task switch
2018-06-15 07:55:24 +09:00
kexec.c
kexec: call do_kexec_load() in compat syscall directly
2018-04-02 20:15:01 +02:00
kexec_core.c
kexec: yield to scheduler when loading kimage segments
2018-06-15 07:55:24 +09:00
kexec_file.c
treewide: Use array_size() in vzalloc()
2018-06-12 16:19:22 -07:00
kexec_internal.h
kmod.c
kprobes.c
kprobes: Fix random address output of blacklist file
2018-04-25 10:27:56 -04:00
ksysfs.c
kthread.c
kthread, tracing: Don't expose half-written comm when creating kthreads
2018-07-26 09:59:33 -04:00
latencytop.c
Makefile
dma-mapping: move all DMA mapping code to kernel/dma
2018-06-14 08:50:37 +02:00
memremap.c
mm: introduce MEMORY_DEVICE_FS_DAX and CONFIG_DEV_PAGEMAP_OPS
2018-05-22 06:59:39 -07:00
module-internal.h
module.c
Modules updates for v4.18
2018-06-16 07:36:39 +09:00
module_signing.c
notifier.c
nsproxy.c
padata.c
panic.c
Kbuild: rename CC_STACKPROTECTOR[_STRONG] config variables
2018-06-14 12:21:18 +09:00
params.c
kernel/params.c: downgrade warning for unsafe parameters
2018-04-11 10:28:37 -07:00
pid.c
xarray: add the xa_lock to the radix_tree_root
2018-04-11 10:28:39 -07:00
pid_namespace.c
Merge branch 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2018-04-03 19:15:32 -07:00
profile.c
ptrace.c
pids: introduce find_get_task_by_vpid() helper
2018-02-06 18:32:46 -08:00
range.c
reboot.c
relay.c
kernel/relay.c: change return type to vm_fault_t
2018-06-15 07:55:24 +09:00
resource.c
libnvdimm for 4.18
2018-06-08 17:21:52 -07:00
rseq.c
rseq: uapi: Declare rseq_cs field as union, update includes
2018-07-10 22:18:52 +02:00
seccomp.c
audit/stable-4.18 PR 20180605
2018-06-06 16:34:00 -07:00
signal.c
signal: Remove no longer required irqsave/restore
2018-06-10 06:14:01 +02:00
smp.c
smpboot.c
smpboot.h
softirq.c
Mark HI and TASKLET softirq synchronous
2018-07-17 11:12:43 -07:00
stacktrace.c
stop_machine.c
stop_machine: Disable preemption when waking two stopper threads
2018-07-15 12:12:45 +02:00
sys.c
mm: introduce arg_lock to protect arg_start|end and env_start|end in mm_struct
2018-06-07 17:34:34 -07:00
sys_ni.c
Merge branch 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-06-10 10:17:09 -07:00
sysctl.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
sysctl_binary.c
staging: irda: remove remaining remants of irda code removal
2018-04-16 11:26:49 +02:00
task_work.c
taskstats.c
pids: introduce find_get_task_by_vpid() helper
2018-02-06 18:32:46 -08:00
test_kprobes.c
torture.c
rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs()
2018-05-15 10:27:29 -07:00
tracepoint.c
tracepoint: Make rcuidle tracepoint callers use SRCU
2018-07-30 19:13:03 -04:00
tsacct.c
ucount.c
headers: untangle kmemleak.h from mm.h
2018-04-05 21:36:27 -07:00
uid16.c
fs: add do_fchownat(), ksys_fchown() helpers and ksys_{,l}chown() wrappers
2018-04-02 20:15:59 +02:00
uid16.h
kernel: provide ksys_*() wrappers for syscalls called by kernel/uid16.c
2018-04-02 20:15:30 +02:00
umh.c
umh: fix race condition
2018-06-07 16:56:28 -04:00
up.c
user-return-notifier.c
user.c
efivarfs: Limit the rate for non-root to read files
2018-02-22 10:21:02 -08:00
user_namespace.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
utsname.c
uts: create "struct uts_namespace" from kmem_cache
2018-04-11 10:28:35 -07:00
utsname_sysctl.c
watchdog.c
watchdog_hld.c
workqueue.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
workqueue_internal.h
workqueue: Set worker->desc to workqueue name by default
2018-05-18 08:47:13 -07:00