Rasmus Villemoes
ff14417c0a
kernel/trace/blktrace.c: use strreplace() in do_blk_trace_setup()
...
Part of the disassembly of do_blk_trace_setup:
231b: e8 00 00 00 00 callq 2320 <do_blk_trace_setup+0x50>
231c: R_X86_64_PC32 strlen+0xfffffffffffffffc
2320: eb 0a jmp 232c <do_blk_trace_setup+0x5c>
2322: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
2328: 48 83 c3 01 add $0x1,%rbx
232c: 48 39 d8 cmp %rbx,%rax
232f: 76 47 jbe 2378 <do_blk_trace_setup+0xa8>
2331: 41 80 3c 1c 2f cmpb $0x2f,(%r12,%rbx,1)
2336: 75 f0 jne 2328 <do_blk_trace_setup+0x58>
2338: 41 c6 04 1c 5f movb $0x5f,(%r12,%rbx,1)
233d: 4c 89 e7 mov %r12,%rdi
2340: e8 00 00 00 00 callq 2345 <do_blk_trace_setup+0x75>
2341: R_X86_64_PC32 strlen+0xfffffffffffffffc
2345: eb e1 jmp 2328 <do_blk_trace_setup+0x58>
Yep, that's right: gcc isn't smart enough to realize that replacing '/' by
'_' cannot change the strlen(), so we call it again and again (at least
when a '/' is found). Even if gcc were that smart, this construction
would still loop over the string twice, once for the initial strlen() call
and then the open-coded loop.
Let's simply use strreplace() instead.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Liked-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-06-25 17:00:40 -07:00
..
blktrace.c
kernel/trace/blktrace.c: use strreplace() in do_blk_trace_setup()
2015-06-25 17:00:40 -07:00
bpf_trace.c
bpf: let kprobe programs use bpf_get_smp_processor_id() helper
2015-06-15 15:53:50 -07:00
ftrace.c
Some clean ups and small fixes, but the biggest change is the addition
2015-04-14 10:49:03 -07:00
Kconfig
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-04-14 14:37:47 -07:00
Makefile
bpf: Fix the build on BPF_SYSCALL=y && !CONFIG_TRACING kernels, make it more configurable
2015-04-02 16:28:06 +02:00
power-traces.c
PM / sleep: export suspend_resume trace event
2015-01-30 02:10:41 +01:00
ring_buffer.c
ring-buffer: Remove duplicate use of '&' in recursive code
2015-03-30 13:36:31 -04:00
ring_buffer_benchmark.c
ring-buffer-benchmark: Fix the wrong sched_priority of producer
2015-06-11 09:27:58 -04:00
rpm-traces.c
trace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
trace.h
Some clean ups and small fixes, but the biggest change is the addition
2015-04-14 10:49:03 -07:00
trace_benchmark.c
tracing: Only calculate stats of tracepoint benchmarks for 2^32 times
2014-06-06 00:41:38 -04:00
trace_benchmark.h
tracing: Add tracepoint benchmark tracepoint
2014-05-29 22:49:54 -04:00
trace_branch.c
tracing: Remove unneeded includes of debugfs.h and fs.h
2015-01-22 11:19:48 -05:00
trace_clock.c
tracing: Fix wraparound problems in "uptime" trace clock
2014-07-21 09:56:12 -04:00
trace_entries.h
tracing: %pF is only for function pointers
2015-03-25 08:57:22 -04:00
trace_event_perf.c
perf: Avoid horrible stack usage
2015-01-14 15:11:45 +01:00
trace_events.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00
trace_events_filter.c
kernel/trace/trace_events_filter.c: use strreplace()
2015-06-25 17:00:40 -07:00
trace_events_filter_test.h
trace_events_trigger.c
trace: Replace single-character seq_puts with seq_putc
2014-11-14 07:55:55 -05:00
trace_export.c
tracing: remove ftrace:function TRACE_EVENT_FL_USE_CALL_FILTER flag
2015-03-25 08:57:23 -04:00
trace_functions.c
tracing/trivial: Fix typos and make an int into a bool
2014-11-20 10:05:36 -05:00
trace_functions_graph.c
This adds three fixes for the tracing code.
2015-04-22 11:27:36 -07:00
trace_irqsoff.c
tracing: Remove unneeded includes of debugfs.h and fs.h
2015-01-22 11:19:48 -05:00
trace_kdb.c
KGDB/KDB fixes and cleanups
2015-01-09 20:51:10 -08:00
trace_kprobe.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-04-14 14:37:47 -07:00
trace_mmiotrace.c
tracing: Do not check return values of trace_seq_p*() for mmio tracer
2014-11-19 15:25:44 -05:00
trace_nop.c
tracing: Remove unneeded includes of debugfs.h and fs.h
2015-01-22 11:19:48 -05:00
trace_output.c
tracing: Make ftrace_print_array_seq compute buf_len
2015-05-06 23:03:23 -04:00
trace_output.h
tracing: Add trace_seq_has_overflowed() and trace_handle_return()
2014-11-19 15:25:39 -05:00
trace_printk.c
tracing: Use IS_ERR() check for return value of tracing_init_dentry()
2015-01-22 11:19:49 -05:00
trace_probe.c
trace: Don't use __weak in header files
2015-03-25 08:57:23 -04:00
trace_probe.h
Some clean ups and small fixes, but the biggest change is the addition
2015-04-14 10:49:03 -07:00
trace_sched_switch.c
tracing: Remove unneeded includes of debugfs.h and fs.h
2015-01-22 11:19:48 -05:00
trace_sched_wakeup.c
tracing: Remove unneeded includes of debugfs.h and fs.h
2015-01-22 11:19:48 -05:00
trace_selftest.c
Seems that Peter Zijlstra added a new check that is making old
2014-10-12 07:28:55 -04:00
trace_selftest_dynamic.c
trace_seq.c
tracing: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:37 -08:00
trace_stack.c
tracing: remove use of seq_printf return value
2015-04-15 16:35:25 -07:00
trace_stat.c
tracing: Convert the tracing facility over to use tracefs
2015-02-03 12:48:41 -05:00
trace_stat.h
trace_syscalls.c
perf: Avoid horrible stack usage
2015-01-14 15:11:45 +01:00
trace_uprobe.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-26 17:22:07 -07:00