Skip to content

Commit 30460c2

Browse files
committed
tracing/probes: Avoid setting TPARG_FL_FENTRY and TPARG_FL_RETURN
When parsing a kprobe event, the return probe always sets both TPARG_FL_RETURN and TPARG_FL_FENTRY, but this is not useful because some fetchargs are only for return probe and some others only for function entry. Make it obviously mutual exclusive. Link: https://lore.kernel.org/all/168507468731.913472.11354553441385410734.stgit@mhiramat.roam.corp.google.com/ Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
1 parent cb16330 commit 30460c2

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

kernel/trace/trace_kprobe.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@ static int __trace_kprobe_create(int argc, const char *argv[])
825825
if (is_return)
826826
flags |= TPARG_FL_RETURN;
827827
ret = kprobe_on_func_entry(NULL, symbol, offset);
828-
if (ret == 0)
828+
if (ret == 0 && !is_return)
829829
flags |= TPARG_FL_FENTRY;
830830
/* Defer the ENOENT case until register kprobe */
831831
if (ret == -EINVAL && is_return) {

kernel/trace/trace_probe.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@ int trace_probe_print_args(struct trace_seq *s, struct probe_arg *args, int nr_a
357357
#define trace_probe_for_each_link_rcu(pos, tp) \
358358
list_for_each_entry_rcu(pos, &(tp)->event->files, list)
359359

360+
/*
361+
* The flags used for parsing trace_probe arguments.
362+
* TPARG_FL_RETURN, TPARG_FL_FENTRY and TPARG_FL_TPOINT are mutually exclusive.
363+
* TPARG_FL_KERNEL and TPARG_FL_USER are also mutually exclusive.
364+
*/
360365
#define TPARG_FL_RETURN BIT(0)
361366
#define TPARG_FL_KERNEL BIT(1)
362367
#define TPARG_FL_FENTRY BIT(2)

0 commit comments

Comments
 (0)