Steven Rostedt (VMware)
1ebe1eaf2f
tracing: Fix converting enum's from the map in trace_event_eval_update()
...
Since enums do not get converted by the TRACE_EVENT macro into their values,
the event format displaces the enum name and not the value. This breaks
tools like perf and trace-cmd that need to interpret the raw binary data. To
solve this, an enum map was created to convert these enums into their actual
numbers on boot up. This is done by TRACE_EVENTS() adding a
TRACE_DEFINE_ENUM() macro.
Some enums were not being converted. This was caused by an optization that
had a bug in it.
All calls get checked against this enum map to see if it should be converted
or not, and it compares the call's system to the system that the enum map
was created under. If they match, then they call is processed.
To cut down on the number of iterations needed to find the maps with a
matching system, since calls and maps are grouped by system, when a match is
made, the index into the map array is saved, so that the next call, if it
belongs to the same system as the previous call, could start right at that
array index and not have to scan all the previous arrays.
The problem was, the saved index was used as the variable to know if this is
a call in a new system or not. If the index was zero, it was assumed that
the call is in a new system and would keep incrementing the saved index
until it found a matching system. The issue arises when the first matching
system was at index zero. The next map, if it belonged to the same system,
would then think it was the first match and increment the index to one. If
the next call belong to the same system, it would begin its search of the
maps off by one, and miss the first enum that should be converted. This left
a single enum not converted properly.
Also add a comment to describe exactly what that index was for. It took me a
bit too long to figure out what I was thinking when debugging this issue.
Link: http://lkml.kernel.org/r/717BE572-2070-4C1E-9902-9F2E0FEDA4F8@oracle.com
Cc: stable@vger.kernel.org
Fixes: 0c564a538a ("tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values")
Reported-by: Chuck Lever <chuck.lever@oracle.com>
Teste-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2018-01-18 15:53:10 -05:00
..
bpf
bpf: add schedule points to map alloc/free
2017-12-12 15:27:22 -08:00
cgroup
Revert "cgroup/cpuset: remove circular dependency deadlock"
2017-12-04 14:55:59 -08:00
configs
debug
kdb: Fix handling of kallsyms_symbol_next() return value
2017-12-06 16:12:43 -06:00
events
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-12-08 13:32:44 -08:00
gcov
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq
genirq/matrix: Fix the precedence fix for real
2017-12-04 20:50:35 +01:00
livepatch
Merge branch 'for-linus' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching
2017-11-15 10:21:58 -08:00
locking
locking/lockdep: Remove the cross-release locking checks
2017-12-12 12:38:51 +01:00
power
Revert "cpuset: Make cpuset hotplug synchronous"
2017-12-04 14:41:11 -08:00
printk
remove task and stack pointer printout from oops dump
2017-12-05 08:23:20 -08:00
rcu
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
sched
sched/rt: Do not pull from current CPU if only one CPU to pull
2017-12-15 16:28:02 +01:00
time
posix-timer: Properly check sigevent->sigev_notify
2017-12-15 11:08:40 +01:00
trace
tracing: Fix converting enum's from the map in trace_event_eval_update()
2018-01-18 15:53:10 -05:00
.gitignore
acct.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
async.c
audit.c
Audit: remove unused audit_log_secctx function
2017-11-10 16:08:47 -05:00
audit.h
audit/stable-4.15 PR 20171113
2017-11-15 13:28:48 -08:00
audit_fsnotify.c
audit_tree.c
Merge branch 'fsnotify' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
2017-11-14 14:08:20 -08:00
audit_watch.c
auditfilter.c
audit: filter PATH records keyed on filesystem magic
2017-11-10 16:08:56 -05:00
auditsc.c
audit/stable-4.15 PR 20171113
2017-11-15 13:28:48 -08:00
backtracetest.c
bounds.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
capability.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
compat.c
sched_rr_get_interval(): move compat to native, get rid of set_fs()
2017-09-20 00:30:57 -04:00
configs.c
context_tracking.c
cpu.c
Merge branch 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-12-06 17:45:36 -08:00
cpu_pm.c
crash_core.c
kdump: print a message in case parse_crashkernel_mem resulted in zero bytes
2017-11-17 16:10:03 -08:00
crash_dump.c
cred.c
delayacct.c
dma.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
elfcore.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
exec_domain.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
exit.c
arch: define weak abort()
2017-12-14 16:00:49 -08:00
extable.c
kprobes, x86/alternatives: Use text_mutex to protect smp_alt_modules
2017-11-07 12:20:09 +01:00
fork.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
freezer.c
futex.c
futex: futex_wake_op, fix sign_extend32 sign bits
2017-12-10 12:50:57 -08:00
futex_compat.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
groups.c
kernel: make groups_sort calling a responsibility group_info allocators
2017-12-14 16:00:49 -08:00
hung_task.c
irq_work.c
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:33:11 -08:00
jump_label.c
jump_label: Invoke jump_label_test() via early_initcall()
2017-11-14 08:41:41 +01:00
kallsyms.c
kallsyms: take advantage of the new '%px' format
2017-11-29 10:30:13 -08:00
kcmp.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kcov.c
kcov: fix comparison callback signature
2017-12-14 16:00:48 -08:00
kexec.c
kexec_core.c
kexec_file.c
resource: Provide resource struct in resource walk callback
2017-11-07 15:35:57 +01:00
kexec_internal.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
kmod.c
kmod: move #ifdef CONFIG_MODULES wrapper to Makefile
2017-09-08 18:26:51 -07:00
kprobes.c
kprobes: Disable the jprobes APIs
2017-10-20 11:02:29 +02:00
ksysfs.c
kthread.c
treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts
2017-11-21 16:35:54 -08:00
latencytop.c
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
memremap.c
memremap: add scheduling point to devm_memremap_pages
2017-10-03 17:54:25 -07:00
module-internal.h
module.c
kallsyms: take advantage of the new '%px' format
2017-11-29 10:30:13 -08:00
module_signing.c
notifier.c
nsproxy.c
padata.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
panic.c
kernel/panic.c: add TAINT_AUX
2017-11-17 16:10:04 -08:00
params.c
kernel/params.c: improve STANDARD_PARAM_DEF readability
2017-10-03 17:54:26 -07:00
pid.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
pid_namespace.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
profile.c
ptrace.c
range.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
reboot.c
kernel/reboot.c: add devm_register_reboot_notifier()
2017-11-17 16:10:04 -08:00
relay.c
resource.c
x86/mm, resource: Use PAGE_KERNEL protection for ioremap of memory pages
2017-11-07 15:35:58 +01:00
seccomp.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
signal.c
Merge branch 'akpm' (patches from Andrew)
2017-11-17 16:56:17 -08:00
smp.c
smp/core: Use lockdep to assert IRQs are disabled/enabled
2017-11-08 11:13:50 +01:00
smpboot.c
watchdog/core, powerpc: Lock cpus across reconfiguration
2017-10-04 10:53:54 +02:00
smpboot.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
softirq.c
kmemcheck: rip it out
2017-11-15 18:21:05 -08:00
stacktrace.c
stop_machine.c
sys.c
arm64 updates for 4.15
2017-11-15 10:56:56 -08:00
sys_ni.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sysctl.c
kernel/sysctl.c: code cleanups
2017-11-17 16:10:03 -08:00
sysctl_binary.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
task_work.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
taskstats.c
test_kprobes.c
kprobes: Disable the jprobes test code
2017-10-20 11:02:54 +02:00
torture.c
tracepoint.c
tsacct.c
ucount.c
uid16.c
kernel: make groups_sort calling a responsibility group_info allocators
2017-12-14 16:00:49 -08:00
umh.c
kernel/umh.c: optimize 'proc_cap_handler()'
2017-11-17 16:10:01 -08:00
up.c
smp: Avoid using two cache lines for struct call_single_data
2017-08-29 15:14:38 +02:00
user-return-notifier.c
user.c
userns: use union in {g,u}idmap struct
2017-10-31 17:22:58 -05:00
user_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2017-11-16 12:20:15 -08:00
utsname.c
utsname_sysctl.c
watchdog.c
Merge branch 'linus' into sched/core, to pick up fixes
2017-11-08 10:17:15 +01:00
watchdog_hld.c
Merge branch 'linus' into core/urgent, to pick up dependent commits
2017-11-04 08:53:04 +01:00
workqueue.c
workqueue: remove unneeded kallsyms include
2017-12-11 07:15:43 -08:00
workqueue_internal.h
Merge branch 'for-4.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2017-11-06 12:26:49 -08:00