]> git.pld-linux.org Git - packages/lttng-modules.git/blob - 0013-fix-sched-tracing-Append-prev_state-to-tp-args-inste.patch
b91cff73c69c61644315eb6fe8bec348b5887666
[packages/lttng-modules.git] / 0013-fix-sched-tracing-Append-prev_state-to-tp-args-inste.patch
1 From 9c5b8de32b5745f3ff31079c02da64595e101bee Mon Sep 17 00:00:00 2001
2 From: Michael Jeanson <mjeanson@efficios.com>
3 Date: Tue, 17 May 2022 11:46:29 -0400
4 Subject: [PATCH 13/13] fix: sched/tracing: Append prev_state to tp args
5  instead (v5.18)
6
7 See upstream commit :
8
9   commit 9c2136be0878c88c53dea26943ce40bb03ad8d8d
10   Author: Delyan Kratunov <delyank@fb.com>
11   Date:   Wed May 11 18:28:36 2022 +0000
12
13     sched/tracing: Append prev_state to tp args instead
14
15     Commit fa2c3254d7cf (sched/tracing: Don't re-read p->state when emitting
16     sched_switch event, 2022-01-20) added a new prev_state argument to the
17     sched_switch tracepoint, before the prev task_struct pointer.
18
19     This reordering of arguments broke BPF programs that use the raw
20     tracepoint (e.g. tp_btf programs). The type of the second argument has
21     changed and existing programs that assume a task_struct* argument
22     (e.g. for bpf_task_storage access) will now fail to verify.
23
24     If we instead append the new argument to the end, all existing programs
25     would continue to work and can conditionally extract the prev_state
26     argument on supported kernel versions.
27
28 Change-Id: Ife2ec88a8bea2743562590cbd357068d7773863f
29 Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
30 Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
31 ---
32  include/instrumentation/events/sched.h | 6 +++---
33  1 file changed, 3 insertions(+), 3 deletions(-)
34
35 diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h
36 index 339bec94..c1c3df15 100644
37 --- a/include/instrumentation/events/sched.h
38 +++ b/include/instrumentation/events/sched.h
39 @@ -356,11 +356,11 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new,
40  LTTNG_TRACEPOINT_EVENT(sched_switch,
41  
42         TP_PROTO(bool preempt,
43 -               unsigned int prev_state,
44                 struct task_struct *prev,
45 -               struct task_struct *next),
46 +               struct task_struct *next,
47 +               unsigned int prev_state),
48  
49 -       TP_ARGS(preempt, prev_state, prev, next),
50 +       TP_ARGS(preempt, prev, next, prev_state),
51  
52         TP_FIELDS(
53                 ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
54 -- 
55 2.36.1
56
This page took 0.022733 seconds and 2 git commands to generate.