fix: rcu: Fix data-race due to atomic_t copy-by-value (v5.6)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 11 Feb 2020 19:51:01 +0000 (14:51 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 25 Feb 2020 15:23:34 +0000 (10:23 -0500)
See upstream commit :

  commit 6cf539a87a61a4fbc43f625267dbcbcf283872ed
  Author: Marco Elver <elver@google.com>
  Date:   Wed Oct 9 17:57:43 2019 +0200

    rcu: Fix data-race due to atomic_t copy-by-value

    This fixes a data-race where `atomic_t dynticks` is copied by value. The
    copy is performed non-atomically, resulting in a data-race if `dynticks`
    is updated concurrently.

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

index cebfa908c66162a09a7a13dc3f56185c1942e34b..028adc508612e4dddd7c577c45fe8fc43bdd9d0e 100644 (file)
@@ -386,7 +386,22 @@ LTTNG_TRACEPOINT_EVENT(rcu_fqs,
  * events use the upper bits of each number, while interrupt-related
  * events use the lower bits.
  */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
+
+       TP_PROTO(const char *polarity, long oldnesting, long newnesting, int dynticks),
+
+       TP_ARGS(polarity, oldnesting, newnesting, dynticks),
+
+       TP_FIELDS(
+               ctf_string(polarity, polarity)
+               ctf_integer(long, oldnesting, oldnesting)
+               ctf_integer(long, newnesting, newnesting)
+               ctf_integer(int, dynticks, dynticks)
+       )
+)
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0))
 LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
 
        TP_PROTO(const char *polarity, long oldnesting, long newnesting, atomic_t dynticks),
This page took 0.0263099999999999 seconds and 4 git commands to generate.