Patch "perf record: Fix BTF type checks in the off-cpu profiling" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    perf record: Fix BTF type checks in the off-cpu profiling

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     perf-record-fix-btf-type-checks-in-the-off-cpu-profi.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit feb525510373e42b791289e52bd8078c206e1255
Author: Namhyung Kim <namhyung@xxxxxxxxxx>
Date:   Fri Sep 22 16:44:44 2023 -0700

    perf record: Fix BTF type checks in the off-cpu profiling
    
    [ Upstream commit 0e501a65d35bf72414379fed0e31a0b6b81ab57d ]
    
    The BTF func proto for a tracepoint has one more argument than the
    actual tracepoint function since it has a context argument at the
    begining.  So it should compare to 5 when the tracepoint has 4
    arguments.
    
      typedef void (*btf_trace_sched_switch)(void *, bool, struct task_struct *, struct task_struct *, unsigned int);
    
    Also, recent change in the perf tool would use a hand-written minimal
    vmlinux.h to generate BTF in the skeleton.  So it won't have the info
    of the tracepoint.  Anyway it should use the kernel's vmlinux BTF to
    check the type in the kernel.
    
    Fixes: b36888f71c85 ("perf record: Handle argument change in sched_switch")
    Reviewed-by: Ian Rogers <irogers@xxxxxxxxxx>
    Acked-by: Song Liu <song@xxxxxxxxxx>
    Cc: Hao Luo <haoluo@xxxxxxxxxx>
    CC: bpf@xxxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/20230922234444.3115821-1-namhyung@xxxxxxxxxx
    Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/perf/util/bpf_off_cpu.c b/tools/perf/util/bpf_off_cpu.c
index 01f70b8e705a8..21f4d9ba023d9 100644
--- a/tools/perf/util/bpf_off_cpu.c
+++ b/tools/perf/util/bpf_off_cpu.c
@@ -98,7 +98,7 @@ static void off_cpu_finish(void *arg __maybe_unused)
 /* v5.18 kernel added prev_state arg, so it needs to check the signature */
 static void check_sched_switch_args(void)
 {
-	const struct btf *btf = bpf_object__btf(skel->obj);
+	const struct btf *btf = btf__load_vmlinux_btf();
 	const struct btf_type *t1, *t2, *t3;
 	u32 type_id;
 
@@ -116,7 +116,8 @@ static void check_sched_switch_args(void)
 		return;
 
 	t3 = btf__type_by_id(btf, t2->type);
-	if (t3 && btf_is_func_proto(t3) && btf_vlen(t3) == 4) {
+	/* btf_trace func proto has one more argument for the context */
+	if (t3 && btf_is_func_proto(t3) && btf_vlen(t3) == 5) {
 		/* new format: pass prev_state as 4th arg */
 		skel->rodata->has_prev_state = true;
 	}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux