fix: sched/tracing: Append prev_state to tp args instead (v5.18)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 17 May 2022 15:46:29 +0000 (11:46 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sun, 16 Apr 2023 17:31:15 +0000 (13:31 -0400)
See upstream commit :

  commit 9c2136be0878c88c53dea26943ce40bb03ad8d8d
  Author: Delyan Kratunov <delyank@fb.com>
  Date:   Wed May 11 18:28:36 2022 +0000

    sched/tracing: Append prev_state to tp args instead

    Commit fa2c3254d7cf (sched/tracing: Don't re-read p->state when emitting
    sched_switch event, 2022-01-20) added a new prev_state argument to the
    sched_switch tracepoint, before the prev task_struct pointer.

    This reordering of arguments broke BPF programs that use the raw
    tracepoint (e.g. tp_btf programs). The type of the second argument has
    changed and existing programs that assume a task_struct* argument
    (e.g. for bpf_task_storage access) will now fail to verify.

    If we instead append the new argument to the end, all existing programs
    would continue to work and can conditionally extract the prev_state
    argument on supported kernel versions.

Change-Id: Ife2ec88a8bea2743562590cbd357068d7773863f
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/sched.h

index 492472860dc033daf19d7da052f8fa54426bdabd..ac91df12c7045e4e19e92eb24de8d33f6e134c34 100644 (file)
@@ -356,11 +356,11 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new,
 LTTNG_TRACEPOINT_EVENT(sched_switch,
 
        TP_PROTO(bool preempt,
-               unsigned int prev_state,
                struct task_struct *prev,
-               struct task_struct *next),
+               struct task_struct *next,
+               unsigned int prev_state),
 
-       TP_ARGS(preempt, prev_state, prev, next),
+       TP_ARGS(preempt, prev, next, prev_state),
 
        TP_FIELDS(
                ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
This page took 0.028619 seconds and 4 git commands to generate.