Steven Rostedt
ddf6e0e507
ftrace: Fix hash record accounting bug
...
If the set_ftrace_filter is cleared by writing just whitespace to
it, then the filter hash refcounts will be decremented but not
updated. This causes two bugs:
1) No functions will be enabled for tracing when they all should be
2) If the users clears the set_ftrace_filter twice, it will crash ftrace:
------------[ cut here ]------------
WARNING: at /home/rostedt/work/git/linux-trace.git/kernel/trace/ftrace.c:1384 __ftrace_hash_rec_update.part.27+0x157/0x1a7()
Modules linked in:
Pid: 2330, comm: bash Not tainted 3.1.0-test+ #32
Call Trace:
[<ffffffff81051828>] warn_slowpath_common+0x83/0x9b
[<ffffffff8105185a>] warn_slowpath_null+0x1a/0x1c
[<ffffffff810ba362>] __ftrace_hash_rec_update.part.27+0x157/0x1a7
[<ffffffff810ba6e8>] ? ftrace_regex_release+0xa7/0x10f
[<ffffffff8111bdfe>] ? kfree+0xe5/0x115
[<ffffffff810ba51e>] ftrace_hash_move+0x2e/0x151
[<ffffffff810ba6fb>] ftrace_regex_release+0xba/0x10f
[<ffffffff8112e49a>] fput+0xfd/0x1c2
[<ffffffff8112b54c>] filp_close+0x6d/0x78
[<ffffffff8113a92d>] sys_dup3+0x197/0x1c1
[<ffffffff8113a9a6>] sys_dup2+0x4f/0x54
[<ffffffff8150cac2>] system_call_fastpath+0x16/0x1b
---[ end trace 77a3a7ee73794a02 ]---
Link: http://lkml.kernel.org/r/20111101141420.GA4918@debian
Reported-by: Rabin Vincent <rabin@rab.in>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2011-12-05 13:28:47 -05:00
..
blktrace.c
kernel: Fix files explicitly needing EXPORT_SYMBOL infrastructure
2011-10-31 19:30:05 -04:00
ftrace.c
ftrace: Fix hash record accounting bug
2011-12-05 13:28:47 -05:00
Kconfig
trace events: Update version number reference to new 3.x scheme for EVENT_POWER_TRACING_DEPRECATED
2011-07-25 09:37:21 +02:00
Makefile
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2011-10-26 17:03:38 +02:00
power-traces.c
perf: Clean up power events by introducing new, more generic ones
2011-01-04 08:16:54 +01:00
ring_buffer.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2011-10-26 17:03:38 +02:00
ring_buffer_benchmark.c
tracing: Use NUMA allocation for per-cpu ring buffer pages
2011-06-14 22:04:39 -04:00
rpm-traces.c
PM / Runtime: Introduce trace points for tracing rpm_* functions
2011-09-27 22:53:27 +02:00
trace.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2011-10-26 17:03:38 +02:00
trace.h
tracing: Warn on output if the function tracer was found corrupted
2011-10-11 09:13:25 -04:00
trace_branch.c
tracing: Allow events to share their print functions
2010-05-14 14:20:32 -04:00
trace_clock.c
tracing: Add a counter clock for those that do not trust clocks
2011-09-19 11:35:58 -04:00
trace_entries.h
tracing: Have dynamic size event stack traces
2011-07-14 16:36:53 -04:00
trace_event_perf.c
tracing: New flag to allow non privileged users to use a trace event
2010-11-18 14:37:40 +01:00
trace_events.c
tracing: fix event_subsystem ref counting
2011-12-05 13:28:44 -05:00
trace_events_filter.c
tracing: Restore system filter behavior
2011-12-05 13:28:45 -05:00
trace_events_filter_test.h
tracing/filter: Add startup tests for events filter
2011-08-19 14:35:59 -04:00
trace_export.c
tracing: Replace trace_event struct array with pointer array
2011-02-02 21:37:13 -05:00
trace_functions.c
ftrace: Fix regression of :mod:module function enabling
2011-07-07 11:30:08 -04:00
trace_functions_graph.c
tracing: Still trace filtered irq functions when irq trace is disabled
2011-07-07 22:26:27 -04:00
trace_irqsoff.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2011-10-26 17:03:38 +02:00
trace_kdb.c
kdb,ftdump: Remove reference to internal kdb include
2010-10-22 15:34:11 -05:00
trace_kprobe.c
ftrace/kprobes: Fix not to delete probes if in use
2011-10-10 15:13:03 -04:00
trace_mmiotrace.c
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
trace_nop.c
tracing/ftrace: make nop-tracer use polling wait for events on pipe
2009-03-23 09:22:15 +01:00
trace_output.c
tracing: Have dynamic size event stack traces
2011-07-14 16:36:53 -04:00
trace_output.h
tracing: Allow events to share their print functions
2010-05-14 14:20:32 -04:00
trace_printk.c
tracing: Clean up tb_fmt to not give faulty compile warning
2011-08-10 20:36:32 -04:00
trace_sched_switch.c
tracing: Remove obsolete sched_switch tracer
2011-02-08 17:14:56 -05:00
trace_sched_wakeup.c
tracing, function_graph: Remove dependency of abstime and duration fields on latency
2011-06-14 22:48:47 -04:00
trace_selftest.c
ftrace: Add self-tests for multiple function trace users
2011-05-18 19:24:51 -04:00
trace_selftest_dynamic.c
ftrace: Add self-tests for multiple function trace users
2011-05-18 19:24:51 -04:00
trace_stack.c
tracing: Convert to kstrtoul_from_user
2011-06-14 22:48:50 -04:00
trace_stat.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
trace_stat.h
tracing/stat: Add stat_release() callback
2009-07-10 12:14:05 +02:00
trace_syscalls.c
kernel: Add <linux/module.h> to files using it implicitly
2011-10-31 09:20:12 -04:00
trace_workqueue.c
jump label: Initialize workqueue tracepoints *before* they are registered
2010-09-22 16:30:03 -04:00