* [PATCH v2 0/4] ftrace: Fix a few issues
@ 2017-05-16 17:51 Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func() Naveen N. Rao
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Naveen N. Rao @ 2017-05-16 17:51 UTC (permalink / raw)
To: Steven Rostedt, Shuah Khan
Cc: Masami Hiramatsu, Michael Ellerman, linux-kernel, linux-kselftest
This is v2 of the patches posted at:
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1395670.html
Changes:
- Patch 1 has been updated to actually simplify the check for glob
- Patch 2 has been updated to guard the call to
clear_ftrace_function_probes() in trace.c with the proper #ifdef's
- Patches 3 and 4 are the same as in v1.
- Naveen
Naveen N. Rao (4):
ftrace: Simplify glob handling in
unregister_ftrace_function_probe_func()
ftrace/instances: Clear function triggers when removing instances
selftests/ftrace: Fix bashisms
selftests/ftrace: Add test to remove instance with active event
triggers
kernel/trace/ftrace.c | 12 ++++++++++--
kernel/trace/trace.c | 3 +++
kernel/trace/trace.h | 1 +
tools/testing/selftests/ftrace/ftracetest | 2 +-
.../selftests/ftrace/test.d/ftrace/func_event_triggers.tc | 2 +-
tools/testing/selftests/ftrace/test.d/functions | 4 ++--
.../selftests/ftrace/test.d/instances/instance-event.tc | 8 ++++++--
7 files changed, 24 insertions(+), 8 deletions(-)
--
2.12.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func()
2017-05-16 17:51 [PATCH v2 0/4] ftrace: Fix a few issues Naveen N. Rao
@ 2017-05-16 17:51 ` Naveen N. Rao
2017-05-17 3:02 ` Masami Hiramatsu
2017-05-16 17:51 ` [PATCH v2 2/4] ftrace/instances: Clear function triggers when removing instances Naveen N. Rao
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Naveen N. Rao @ 2017-05-16 17:51 UTC (permalink / raw)
To: Steven Rostedt, Shuah Khan
Cc: Masami Hiramatsu, Michael Ellerman, linux-kernel, linux-kselftest
Handle a NULL glob properly and simplify the check.
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
kernel/trace/ftrace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 39dca4e86a94..c35c3e67d09a 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4144,9 +4144,9 @@ unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
int i, ret = -ENODEV;
int size;
- if (glob && (strcmp(glob, "*") == 0 || !strlen(glob)))
+ if (!glob || !strlen(glob) || !strcmp(glob, "*"))
func_g.search = NULL;
- else if (glob) {
+ else {
int not;
func_g.type = filter_parse_regex(glob, strlen(glob),
--
2.12.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/4] ftrace/instances: Clear function triggers when removing instances
2017-05-16 17:51 [PATCH v2 0/4] ftrace: Fix a few issues Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func() Naveen N. Rao
@ 2017-05-16 17:51 ` Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 3/4] selftests/ftrace: Fix bashisms Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 4/4] selftests/ftrace: Add test to remove instance with active event triggers Naveen N. Rao
3 siblings, 0 replies; 6+ messages in thread
From: Naveen N. Rao @ 2017-05-16 17:51 UTC (permalink / raw)
To: Steven Rostedt, Shuah Khan
Cc: Masami Hiramatsu, Michael Ellerman, linux-kernel, linux-kselftest
If instance directories are deleted while there are registered function
triggers:
# cd /sys/kernel/debug/tracing/instances
# mkdir test
# echo "schedule:enable_event:sched:sched_switch" > test/set_ftrace_filter
# rmdir test
Unable to handle kernel paging request for data at address 0x00000008
Unable to handle kernel paging request for data at address 0x00000008
Faulting instruction address: 0xc0000000021edde8
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2048
NUMA
pSeries
Modules linked in: iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp tun bridge stp llc kvm iptable_filter fuse binfmt_misc pseries_rng rng_core vmx_crypto ib_iser rdma_cm iw_cm ib_cm ib_core libiscsi scsi_transport_iscsi ip_tables x_tables autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c multipath virtio_net virtio_blk virtio_pci crc32c_vpmsum virtio_ring virtio
CPU: 8 PID: 8694 Comm: rmdir Not tainted 4.11.0-nnr+ #113
task: c0000000bab52800 task.stack: c0000000baba0000
NIP: c0000000021edde8 LR: c0000000021f0590 CTR: c000000002119620
REGS: c0000000baba3870 TRAP: 0300 Not tainted (4.11.0-nnr+)
MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE>
CR: 22002422 XER: 20000000
CFAR: 00007fffabb725a8 DAR: 0000000000000008 DSISR: 40000000 SOFTE: 0
GPR00: c00000000220f750 c0000000baba3af0 c000000003157e00 0000000000000000
GPR04: 0000000000000040 00000000000000eb 0000000000000040 0000000000000000
GPR08: 0000000000000000 0000000000000113 0000000000000000 c00000000305db98
GPR12: c000000002119620 c00000000fd42c00 0000000000000000 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20: 0000000000000000 0000000000000000 c0000000bab52e90 0000000000000000
GPR24: 0000000000000000 00000000000000eb 0000000000000040 c0000000baba3bb0
GPR28: c00000009cb06eb0 c0000000bab52800 c00000009cb06eb0 c0000000baba3bb0
NIP [c0000000021edde8] ring_buffer_lock_reserve+0x8/0x4e0
LR [c0000000021f0590] trace_event_buffer_lock_reserve+0xe0/0x1a0
Call Trace:
[c0000000baba3af0] [c0000000021f96c8] trace_event_buffer_commit+0x1b8/0x280 (unreliable)
[c0000000baba3b60] [c00000000220f750] trace_event_buffer_reserve+0x80/0xd0
[c0000000baba3b90] [c0000000021196b8] trace_event_raw_event_sched_switch+0x98/0x180
[c0000000baba3c10] [c0000000029d9980] __schedule+0x6e0/0xab0
[c0000000baba3ce0] [c000000002122230] do_task_dead+0x70/0xc0
[c0000000baba3d10] [c0000000020ea9c8] do_exit+0x828/0xd00
[c0000000baba3dd0] [c0000000020eaf70] do_group_exit+0x60/0x100
[c0000000baba3e10] [c0000000020eb034] SyS_exit_group+0x24/0x30
[c0000000baba3e30] [c00000000200bcec] system_call+0x38/0x54
Instruction dump:
60000000 60420000 7d244b78 7f63db78 4bffaa09 393efff8 793e0020 39200000
4bfffecc 60420000 3c4c00f7 3842a020 <81230008> 2f890000 409e02f0 a14d0008
---[ end trace b917b8985d0e650b ]---
Unable to handle kernel paging request for data at address 0x00000008
Faulting instruction address: 0xc0000000021edde8
Unable to handle kernel paging request for data at address 0x00000008
Faulting instruction address: 0xc0000000021edde8
Faulting instruction address: 0xc0000000021edde8
To address this, let's clear all registered function probes before
deleting the ftrace instance.
Reported-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
kernel/trace/ftrace.c | 8 ++++++++
kernel/trace/trace.c | 3 +++
kernel/trace/trace.h | 1 +
3 files changed, 12 insertions(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index c35c3e67d09a..74fdfe9ed3db 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4256,6 +4256,14 @@ unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
return ret;
}
+void clear_ftrace_function_probes(struct trace_array *tr)
+{
+ struct ftrace_func_probe *probe, *n;
+
+ list_for_each_entry_safe(probe, n, &tr->func_probes, list)
+ unregister_ftrace_function_probe_func(NULL, tr, probe->probe_ops);
+}
+
static LIST_HEAD(ftrace_commands);
static DEFINE_MUTEX(ftrace_cmd_mutex);
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index c4536c449021..9f490f21d8ac 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -7550,6 +7550,9 @@ static int instance_rmdir(const char *name)
}
tracing_set_nop(tr);
+#if defined(CONFIG_FUNCTION_TRACER) && defined(CONFIG_DYNAMIC_FTRACE)
+ clear_ftrace_function_probes(tr);
+#endif
event_trace_del_tracer(tr);
ftrace_clear_pids(tr);
ftrace_destroy_function_files(tr);
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 291a1bca5748..98e0845f7235 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -980,6 +980,7 @@ register_ftrace_function_probe(char *glob, struct trace_array *tr,
extern int
unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
struct ftrace_probe_ops *ops);
+extern void clear_ftrace_function_probes(struct trace_array *tr);
int register_ftrace_command(struct ftrace_func_command *cmd);
int unregister_ftrace_command(struct ftrace_func_command *cmd);
--
2.12.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/4] selftests/ftrace: Fix bashisms
2017-05-16 17:51 [PATCH v2 0/4] ftrace: Fix a few issues Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func() Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 2/4] ftrace/instances: Clear function triggers when removing instances Naveen N. Rao
@ 2017-05-16 17:51 ` Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 4/4] selftests/ftrace: Add test to remove instance with active event triggers Naveen N. Rao
3 siblings, 0 replies; 6+ messages in thread
From: Naveen N. Rao @ 2017-05-16 17:51 UTC (permalink / raw)
To: Steven Rostedt, Shuah Khan
Cc: Masami Hiramatsu, Michael Ellerman, linux-kernel, linux-kselftest
Fix a few bashisms in ftrace selftests.
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
tools/testing/selftests/ftrace/ftracetest | 2 +-
tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc | 2 +-
tools/testing/selftests/ftrace/test.d/functions | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest
index 32e6211e1c6e..717581145cfc 100755
--- a/tools/testing/selftests/ftrace/ftracetest
+++ b/tools/testing/selftests/ftrace/ftracetest
@@ -58,7 +58,7 @@ parse_opts() { # opts
;;
--verbose|-v|-vv)
VERBOSE=$((VERBOSE + 1))
- [ $1 == '-vv' ] && VERBOSE=$((VERBOSE + 1))
+ [ $1 = '-vv' ] && VERBOSE=$((VERBOSE + 1))
shift 1
;;
--debug|-d)
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
index 07bb3e5930b4..aa31368851c9 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
@@ -48,7 +48,7 @@ test_event_enabled() {
e=`cat $EVENT_ENABLE`
if [ "$e" != $val ]; then
echo "Expected $val but found $e"
- exit -1
+ exit 1
fi
}
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions
index 9aec6fcb7729..f2019b37370d 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -34,10 +34,10 @@ reset_ftrace_filter() { # reset all triggers in set_ftrace_filter
echo > set_ftrace_filter
grep -v '^#' set_ftrace_filter | while read t; do
tr=`echo $t | cut -d: -f2`
- if [ "$tr" == "" ]; then
+ if [ "$tr" = "" ]; then
continue
fi
- if [ $tr == "enable_event" -o $tr == "disable_event" ]; then
+ if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
tr=`echo $t | cut -d: -f1-4`
limit=`echo $t | cut -d: -f5`
else
--
2.12.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 4/4] selftests/ftrace: Add test to remove instance with active event triggers
2017-05-16 17:51 [PATCH v2 0/4] ftrace: Fix a few issues Naveen N. Rao
` (2 preceding siblings ...)
2017-05-16 17:51 ` [PATCH v2 3/4] selftests/ftrace: Fix bashisms Naveen N. Rao
@ 2017-05-16 17:51 ` Naveen N. Rao
3 siblings, 0 replies; 6+ messages in thread
From: Naveen N. Rao @ 2017-05-16 17:51 UTC (permalink / raw)
To: Steven Rostedt, Shuah Khan
Cc: Masami Hiramatsu, Michael Ellerman, linux-kernel, linux-kselftest
Add a test to ensure we clean up properly when removing an instance
with active event triggers.
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
---
tools/testing/selftests/ftrace/test.d/instances/instance-event.tc | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
index 4c5a061a5b4e..c73db7863adb 100644
--- a/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
+++ b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
@@ -75,9 +75,13 @@ rmdir foo
if [ -d foo ]; then
fail "foo still exists"
fi
-exit 0
-
+mkdir foo
+echo "schedule:enable_event:sched:sched_switch" > foo/set_ftrace_filter
+rmdir foo
+if [ -d foo ]; then
+ fail "foo still exists"
+fi
instance_slam() {
--
2.12.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func()
2017-05-16 17:51 ` [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func() Naveen N. Rao
@ 2017-05-17 3:02 ` Masami Hiramatsu
0 siblings, 0 replies; 6+ messages in thread
From: Masami Hiramatsu @ 2017-05-17 3:02 UTC (permalink / raw)
To: Naveen N. Rao
Cc: Steven Rostedt, Shuah Khan, Masami Hiramatsu, Michael Ellerman,
linux-kernel, linux-kselftest
On Tue, 16 May 2017 23:21:25 +0530
"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> wrote:
> Handle a NULL glob properly and simplify the check.
>
Looks good to me.
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Thanks!
> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> ---
> kernel/trace/ftrace.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 39dca4e86a94..c35c3e67d09a 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -4144,9 +4144,9 @@ unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
> int i, ret = -ENODEV;
> int size;
>
> - if (glob && (strcmp(glob, "*") == 0 || !strlen(glob)))
> + if (!glob || !strlen(glob) || !strcmp(glob, "*"))
> func_g.search = NULL;
> - else if (glob) {
> + else {
> int not;
>
> func_g.type = filter_parse_regex(glob, strlen(glob),
> --
> 2.12.2
>
--
Masami Hiramatsu <mhiramat@kernel.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-05-17 3:03 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-16 17:51 [PATCH v2 0/4] ftrace: Fix a few issues Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 1/4] ftrace: Simplify glob handling in unregister_ftrace_function_probe_func() Naveen N. Rao
2017-05-17 3:02 ` Masami Hiramatsu
2017-05-16 17:51 ` [PATCH v2 2/4] ftrace/instances: Clear function triggers when removing instances Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 3/4] selftests/ftrace: Fix bashisms Naveen N. Rao
2017-05-16 17:51 ` [PATCH v2 4/4] selftests/ftrace: Add test to remove instance with active event triggers Naveen N. Rao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.