Package: lttng-modules-dkms
Version: 2.12.0-1
Severity: important

Dear Maintainer,

lttngs FTBFS with Linux-5.7 is several different ways: since upstream upstream
has several fixes for it (all queed in the stable 2.12 branch): cherry pick all
of them (see the attached debdiff).

-- System Information:
Debian Release: bullseye/sid
  APT prefers focal-updates
  APT policy: (500, 'focal-updates'), (500, 'focal-security'), (500, 
'focal-proposed'), (500, 'focal'), (100, 'focal-backports')
Architecture: amd64 (x86_64)

Kernel: Linux 5.4.0-31-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to C.UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) (ignored: LC_ALL set to 
C.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages lttng-modules-dkms depends on:
ii  dkms  2.8.1-5ubuntu1

Versions of packages lttng-modules-dkms recommends:
pn  lttng-tools  <none>

lttng-modules-dkms suggests no packages.
diff -Nru lttng-modules-2.12.0/debian/changelog 
lttng-modules-2.12.0/debian/changelog
--- lttng-modules-2.12.0/debian/changelog       2020-04-08 19:49:55.000000000 
+0000
+++ lttng-modules-2.12.0/debian/changelog       2020-05-14 14:25:14.000000000 
+0000
@@ -1,3 +1,9 @@
+lttng-modules (2.12.0-2) unstable; urgency=medium
+
+  * cherry-picks all Linux-5.7 fixes from upstream stable-2.12 branch
+
+ -- Paolo Pisati <paolo.pis...@canonical.com>  Thu, 14 May 2020 14:25:14 +0000
+
 lttng-modules (2.12.0-1) unstable; urgency=medium
 
   * [e5929d1] New upstream version 2.12.0
diff -Nru 
lttng-modules-2.12.0/debian/patches/0001-instrumentation-update-mm_vmscan-for-kernel-5.7.0.patch
 
lttng-modules-2.12.0/debian/patches/0001-instrumentation-update-mm_vmscan-for-kernel-5.7.0.patch
--- 
lttng-modules-2.12.0/debian/patches/0001-instrumentation-update-mm_vmscan-for-kernel-5.7.0.patch
    1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0001-instrumentation-update-mm_vmscan-for-kernel-5.7.0.patch
    2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,41 @@
+From 1b174681e3bdc296cc7bad67861796bd51abb18f Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Mon, 13 Apr 2020 11:38:48 -0400
+Subject: [PATCH] instrumentation: update mm_vmscan for kernel >= 5.7.0
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+(cherry picked from commit 9eae8438a31af1a91f73436f8383e2a8b3d162a3)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ instrumentation/events/lttng-module/mm_vmscan.h | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/instrumentation/events/lttng-module/mm_vmscan.h 
b/instrumentation/events/lttng-module/mm_vmscan.h
+index f99767a8..9f8a2782 100644
+--- a/instrumentation/events/lttng-module/mm_vmscan.h
++++ b/instrumentation/events/lttng-module/mm_vmscan.h
+@@ -568,7 +568,20 @@ 
LTTNG_TRACEPOINT_EVENT_INSTANCE(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_
+ )
+ #endif
+ 
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0))
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage,
++
++      TP_PROTO(struct page *page),
++
++      TP_ARGS(page),
++
++      TP_FIELDS(
++              ctf_integer_hex(struct page *, page, page)
++              ctf_integer(int, reclaim_flags, trace_reclaim_flags(
++                              page_is_file_lru(page)))
++      )
++)
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0))
+ LTTNG_TRACEPOINT_EVENT(mm_vmscan_writepage,
+ 
+       TP_PROTO(struct page *page),
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0002-instrumentation-update-x86-kvm-instrumentation-for-k.patch
 
lttng-modules-2.12.0/debian/patches/0002-instrumentation-update-x86-kvm-instrumentation-for-k.patch
--- 
lttng-modules-2.12.0/debian/patches/0002-instrumentation-update-x86-kvm-instrumentation-for-k.patch
 1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0002-instrumentation-update-x86-kvm-instrumentation-for-k.patch
 2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,141 @@
+From e73c44de63994670d85677146afbe76dd98d890d Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Mon, 13 Apr 2020 11:44:23 -0400
+Subject: [PATCH 2/8] instrumentation: update x86 kvm instrumentation for
+ kernel >= 5.7.0
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+(cherry picked from commit b732ab4d46f77bbe26880131295ad6eb47b10138)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ .../events/lttng-module/arch/x86/kvm/trace.h  | 20 ++++++++-
+ probes/Kbuild                                 | 42 +++++++++++++------
+ probes/lttng-probe-kvm-x86.c                  |  4 ++
+ 3 files changed, 52 insertions(+), 14 deletions(-)
+
+diff --git a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h 
b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
+index 57ac7f48..4416ae02 100644
+--- a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
++++ b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
+@@ -124,8 +124,13 @@ LTTNG_TRACEPOINT_EVENT_CODE_MAP(kvm_exit, kvm_x86_exit,
+       ),
+ 
+       TP_code_pre(
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++              kvm_x86_ops.get_exit_info(vcpu, &tp_locvar->info1,
++                              &tp_locvar->info2);
++#else
+               kvm_x86_ops->get_exit_info(vcpu, &tp_locvar->info1,
+                               &tp_locvar->info2);
++#endif
+       ),
+ 
+       TP_FIELDS(
+@@ -430,13 +435,15 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_emulate_insn, 
kvm_x86_emulate_insn,
+               ctf_integer(__u8, len, vcpu->arch.emulate_ctxt.decode.eip
+                               - vcpu->arch.emulate_ctxt.decode.fetch.start)
+               ctf_array(__u8, insn, 
vcpu->arch.emulate_ctxt.decode.fetch.data, 15)
++              ctf_integer(__u8, flags, 
kei_decode_mode(vcpu->arch.emulate_ctxt.mode))
+ #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0))
+               ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt.fetch.start)
+               ctf_integer(__u32, csbase, kvm_x86_ops->get_segment_base(vcpu, 
VCPU_SREG_CS))
+               ctf_integer(__u8, len, vcpu->arch.emulate_ctxt._eip
+                               - vcpu->arch.emulate_ctxt.fetch.start)
+               ctf_array(__u8, insn, vcpu->arch.emulate_ctxt.fetch.data, 15)
+-#else
++              ctf_integer(__u8, flags, 
kei_decode_mode(vcpu->arch.emulate_ctxt.mode))
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5,7,0))
+               ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt._eip -
+                               (vcpu->arch.emulate_ctxt.fetch.ptr -
+                                       vcpu->arch.emulate_ctxt.fetch.data))
+@@ -444,8 +451,17 @@ LTTNG_TRACEPOINT_EVENT_MAP(kvm_emulate_insn, 
kvm_x86_emulate_insn,
+               ctf_integer(__u8, len, vcpu->arch.emulate_ctxt.fetch.ptr -
+                               vcpu->arch.emulate_ctxt.fetch.data)
+               ctf_array(__u8, insn, vcpu->arch.emulate_ctxt.fetch.data, 15)
+-#endif
+               ctf_integer(__u8, flags, 
kei_decode_mode(vcpu->arch.emulate_ctxt.mode))
++#else
++              ctf_integer(__u64, rip, vcpu->arch.emulate_ctxt->_eip -
++                              (vcpu->arch.emulate_ctxt->fetch.ptr -
++                                      vcpu->arch.emulate_ctxt->fetch.data))
++              ctf_integer(__u32, csbase, kvm_x86_ops.get_segment_base(vcpu, 
VCPU_SREG_CS))
++              ctf_integer(__u8, len, vcpu->arch.emulate_ctxt->fetch.ptr -
++                              vcpu->arch.emulate_ctxt->fetch.data)
++              ctf_array(__u8, insn, vcpu->arch.emulate_ctxt->fetch.data, 15)
++              ctf_integer(__u8, flags, 
kei_decode_mode(vcpu->arch.emulate_ctxt->mode))
++#endif
+               ctf_integer(__u8, failed, failed)
+       )
+ )
+diff --git a/probes/Kbuild b/probes/Kbuild
+index c5371881..18766855 100644
+--- a/probes/Kbuild
++++ b/probes/Kbuild
+@@ -30,19 +30,37 @@ ifneq ($(CONFIG_KVM),)
+   obj-$(CONFIG_LTTNG) += lttng-probe-kvm.o
+   ifneq ($(CONFIG_X86),)
+     kvm_dep_lapic = $(srctree)/arch/x86/kvm/lapic.h
+-    ifneq ($(wildcard $(kvm_dep_lapic)),)
+-      kvm_dep = $(srctree)/virt/kvm/iodev.h $(srctree)/include/kvm/iodev.h
+-      ifneq ($(wildcard $(kvm_dep)),)
+-        CFLAGS_lttng-probe-kvm-x86.o += -I$(srctree)/virt/kvm
+-        CFLAGS_lttng-probe-kvm-x86-mmu.o += -I$(srctree)/virt/kvm
+-        obj-$(CONFIG_LTTNG) += lttng-probe-kvm-x86.o
+-        obj-$(CONFIG_LTTNG) += lttng-probe-kvm-x86-mmu.o
+-      else
+-        $(warning File $(kvm_dep) not found. Probe "kvm" x86-specific is 
disabled. Use full kernel source tree to enable it.)
+-      endif # $(wildcard $(kvm_dep))
+-    else
++    kvm_dep_lapic_check = $(wildcard $(kvm_dep_lapic))
++    ifneq ($(kvm_dep_lapic_check),)
++      # search for iodev.h in any of its known locations
++      kvm_dep_iodev = $(srctree)/virt/kvm/iodev.h 
$(srctree)/include/kvm/iodev.h
++      kvm_dep_iodev_check = $(wildcard $(kvm_dep_iodev))
++      ifneq ($(kvm_dep_iodev_check),)
++        kvm_dep_emulate = $(srctree)/arch/x86/kvm/kvm_emulate.h
++        kvm_dep_emulate_wildcard = $(wildcard $(kvm_dep_emulate))
++        kvm_dep_emulate_check = $(shell \
++        if [ \( $(VERSION) -ge 6 \
++           -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -eq 7 \) \) -a \
++           -z "$(kvm_dep_emulate_wildcard)" ] ; then \
++          echo "warn" ; \
++        else \
++          echo "ok" ; \
++        fi ;)
++        ifeq ($(kvm_dep_emulate_check),ok)
++          CFLAGS_lttng-probe-kvm-x86.o += -I$(srctree)/virt/kvm \
++                     -I$(srctree)/arch/x86/kvm
++          CFLAGS_lttng-probe-kvm-x86-mmu.o += -I$(srctree)/virt/kvm
++          obj-$(CONFIG_LTTNG) += lttng-probe-kvm-x86.o
++          obj-$(CONFIG_LTTNG) += lttng-probe-kvm-x86-mmu.o
++        else # ($(kvm_dep_emulate_check),ok)
++          $(warning File $(kvm_dep_emulate) not found. Probe "kvm" 
x86-specific is disabled. Use full kernel source tree to enable it.)
++        endif # ($(kvm_dep_emulate_check),ok)
++      else # $(kvm_dep_iodev_check)
++        $(warning File $(kvm_dep_iodev) not found. Probe "kvm" x86-specific 
is disabled. Use full kernel source tree to enable it.)
++      endif # $(kvm_dep_iodev_check)
++    else # $(kvm_dep_lapic_check)
+       $(warning File $(kvm_dep_lapic) not found. Probe "kvm" x86-specific is 
disabled. Use full kernel source tree to enable it.)
+-    endif # $(wildcard $(kvm_dep_lapic))
++    endif # $(kvm_dep_lapic_check)
+   endif # CONFIG_X86
+ endif # CONFIG_KVM
+ 
+diff --git a/probes/lttng-probe-kvm-x86.c b/probes/lttng-probe-kvm-x86.c
+index f081cdd5..6dfaa31e 100644
+--- a/probes/lttng-probe-kvm-x86.c
++++ b/probes/lttng-probe-kvm-x86.c
+@@ -12,6 +12,10 @@
+ #include <lttng-tracer.h>
+ #include <lttng-kernel-version.h>
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++#include <kvm_emulate.h>
++#endif
++
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0))
+ #include <kvm/iodev.h>
+ #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) */
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0003-Introduce-lttng_guid_gen-wrapper-for-kernels-5.7.0.patch
 
lttng-modules-2.12.0/debian/patches/0003-Introduce-lttng_guid_gen-wrapper-for-kernels-5.7.0.patch
--- 
lttng-modules-2.12.0/debian/patches/0003-Introduce-lttng_guid_gen-wrapper-for-kernels-5.7.0.patch
   1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0003-Introduce-lttng_guid_gen-wrapper-for-kernels-5.7.0.patch
   2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,75 @@
+From da7f4db25d662cb51ce91f7338b429aa2327e214 Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Mon, 13 Apr 2020 12:16:43 -0400
+Subject: [PATCH 3/8] Introduce lttng_guid_gen wrapper for kernels >= 5.7.0
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+(cherry picked from commit 8b7bb83e1100aa3c3e22148b27358b0d9a81786b)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ lttng-events.c |  4 ++--
+ wrapper/uuid.h | 28 ++++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 2 deletions(-)
+ create mode 100644 wrapper/uuid.h
+
+diff --git a/lttng-events.c b/lttng-events.c
+index a1c8445a..8e8e65a5 100644
+--- a/lttng-events.c
++++ b/lttng-events.c
+@@ -27,9 +27,9 @@
+ #include <linux/jhash.h>
+ #include <linux/uaccess.h>
+ #include <linux/vmalloc.h>
+-#include <linux/uuid.h>
+ #include <linux/dmi.h>
+ 
++#include <wrapper/uuid.h>
+ #include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
+ #include <wrapper/random.h>
+ #include <wrapper/tracepoint.h>
+@@ -130,7 +130,7 @@ struct lttng_session *lttng_session_create(void)
+               goto err;
+       INIT_LIST_HEAD(&session->chan);
+       INIT_LIST_HEAD(&session->events);
+-      uuid_le_gen(&session->uuid);
++      lttng_guid_gen(&session->uuid);
+ 
+       metadata_cache = kzalloc(sizeof(struct lttng_metadata_cache),
+                       GFP_KERNEL);
+diff --git a/wrapper/uuid.h b/wrapper/uuid.h
+new file mode 100644
+index 00000000..74946e23
+--- /dev/null
++++ b/wrapper/uuid.h
+@@ -0,0 +1,28 @@
++/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
++ *
++ * wrapper/uuid.h
++ *
++ * Copyright (C) 2020 Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
++ */
++
++#ifndef _LTTNG_WRAPPER_UUID_H
++#define _LTTNG_WRAPPER_UUID_H
++
++#include <linux/version.h>
++#include <linux/uuid.h>
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++static inline
++void lttng_guid_gen(guid_t *u)
++{
++      return guid_gen(u);
++}
++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++static inline
++void lttng_guid_gen(guid_t *u)
++{
++      return uuid_le_gen(u);
++}
++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
++#endif /* _LTTNG_WRAPPER_UUID_H */
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0004-Move-lttng-wrappers-into-own-module.patch
 
lttng-modules-2.12.0/debian/patches/0004-Move-lttng-wrappers-into-own-module.patch
--- 
lttng-modules-2.12.0/debian/patches/0004-Move-lttng-wrappers-into-own-module.patch
  1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0004-Move-lttng-wrappers-into-own-module.patch
  2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,192 @@
+From c719616a9a9f11955ec69c73c04eb5efd564ed30 Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Mon, 4 May 2020 14:52:13 -0400
+Subject: [PATCH 4/8] Move lttng wrappers into own module
+
+Currently, we only pull the wrapper symbols into a single sub-module,
+either:
+
+lttng-tracer.o:
+  - wrapper/random.o
+  - wrapper/trace-clock.o
+  - wrapper/page_alloc.o
+
+or
+
+lttng-statedump.o:
+  - wrapper/irqdesc.o
+  - wrapper/fdtable.o
+
+Because lttng-tracer depends on lttng-statedump, we cannot just put all
+wrappers into lttng-tracer.o, because it would create a circular
+dependency. This will be an issue if we introduce common wrappers which
+are used in both lttng-tracer.o and in lttng-statedump.o.
+
+Introduce a new lttng-wrapper.o to contain all wrapper symbols for all
+lttng modules.
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+(cherry picked from commit d4d4da49b06f3000a70ce246a3ac991a0f9d6cc5)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ Makefile             | 19 +++++++++++++------
+ lttng-wrapper-impl.c | 37 +++++++++++++++++++++++++++++++++++++
+ wrapper/irqdesc.c    |  2 ++
+ wrapper/page_alloc.c |  2 ++
+ wrapper/random.c     |  2 ++
+ 5 files changed, 56 insertions(+), 6 deletions(-)
+ create mode 100644 lttng-wrapper-impl.c
+
+diff --git a/Makefile b/Makefile
+index 4a6ddbc5..210923de 100644
+--- a/Makefile
++++ b/Makefile
+@@ -41,6 +41,8 @@ ifneq ($(KERNELRELEASE),)
+ 
+   obj-$(CONFIG_LTTNG) += lttng-tracer.o
+ 
++  obj-$(CONFIG_LTTNG) += lttng-wrapper.o
++
+   lttng-tracer-objs := lttng-events.o lttng-abi.o lttng-string-utils.o \
+                        lttng-probes.o lttng-context.o \
+                        lttng-context-pid.o lttng-context-procname.o \
+@@ -63,15 +65,21 @@ ifneq ($(KERNELRELEASE),)
+                        lttng-context-interruptible.o \
+                        lttng-context-need-reschedule.o \
+                        lttng-context-callstack.o lttng-calibrate.o \
+-                       lttng-context-hostname.o wrapper/random.o \
+-                       probes/lttng.o wrapper/trace-clock.o \
+-                       wrapper/page_alloc.o \
++                       lttng-context-hostname.o \
++                       probes/lttng.o \
+                        lttng-tracker-id.o \
+                        lttng-filter.o lttng-filter-interpreter.o \
+                        lttng-filter-specialize.o \
+                        lttng-filter-validator.o \
+                        probes/lttng-probe-user.o \
+-                       lttng-tp-mempool.o
++                       lttng-tp-mempool.o \
++
++  lttng-wrapper-objs := wrapper/page_alloc.o \
++                        wrapper/random.o \
++                        wrapper/trace-clock.o \
++                        wrapper/irqdesc.o \
++                        wrapper/fdtable.o \
++                        lttng-wrapper-impl.o
+ 
+   ifneq ($(CONFIG_HAVE_SYSCALL_TRACEPOINTS),)
+     lttng-tracer-objs += lttng-syscalls.o
+@@ -122,8 +130,7 @@ ifneq ($(KERNELRELEASE),)
+   endif
+ 
+   obj-$(CONFIG_LTTNG) += lttng-statedump.o
+-  lttng-statedump-objs := lttng-statedump-impl.o wrapper/irqdesc.o \
+-                          wrapper/fdtable.o
++  lttng-statedump-objs := lttng-statedump-impl.o
+ 
+   obj-$(CONFIG_LTTNG) += probes/
+   obj-$(CONFIG_LTTNG) += lib/
+diff --git a/lttng-wrapper-impl.c b/lttng-wrapper-impl.c
+new file mode 100644
+index 00000000..61319699
+--- /dev/null
++++ b/lttng-wrapper-impl.c
+@@ -0,0 +1,37 @@
++/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
++ *
++ * lttng-wrapper.c
++ *
++ * Copyright (C) 2020 Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
++ */
++
++#include <linux/module.h>
++#include <lttng-tracer.h>
++
++static int __init lttng_wrapper_init(void)
++{
++      return 0;
++}
++
++module_init(lttng_wrapper_init);
++
++static void __exit lttng_exit(void)
++{
++}
++
++module_exit(lttng_exit);
++
++#include "extra_version/patches.i"
++#ifdef LTTNG_EXTRA_VERSION_GIT
++MODULE_INFO(extra_version_git, LTTNG_EXTRA_VERSION_GIT);
++#endif
++#ifdef LTTNG_EXTRA_VERSION_NAME
++MODULE_INFO(extra_version_name, LTTNG_EXTRA_VERSION_NAME);
++#endif
++MODULE_LICENSE("GPL and additional rights");
++MODULE_AUTHOR("Mathieu Desnoyers <mathieu.desnoy...@efficios.com>");
++MODULE_DESCRIPTION("LTTng wrapper");
++MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "."
++      __stringify(LTTNG_MODULES_MINOR_VERSION) "."
++      __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION)
++      LTTNG_MODULES_EXTRAVERSION);
+diff --git a/wrapper/irqdesc.c b/wrapper/irqdesc.c
+index 29427d47..d524c633 100644
+--- a/wrapper/irqdesc.c
++++ b/wrapper/irqdesc.c
+@@ -34,6 +34,7 @@ struct irq_desc *wrapper_irq_to_desc(unsigned int irq)
+               return NULL;
+       }
+ }
++EXPORT_SYMBOL_GPL(wrapper_irq_to_desc);
+ 
+ #else
+ 
+@@ -44,5 +45,6 @@ struct irq_desc *wrapper_irq_to_desc(unsigned int irq)
+ {
+       return irq_to_desc(irq);
+ }
++EXPORT_SYMBOL_GPL(wrapper_irq_to_desc);
+ 
+ #endif
+diff --git a/wrapper/page_alloc.c b/wrapper/page_alloc.c
+index baa8603f..40998199 100644
+--- a/wrapper/page_alloc.c
++++ b/wrapper/page_alloc.c
+@@ -52,6 +52,7 @@ int wrapper_get_pfnblock_flags_mask_init(void)
+               return -1;
+       return 0;
+ }
++EXPORT_SYMBOL_GPL(wrapper_get_pfnblock_flags_mask_init);
+ 
+ #else
+ 
+@@ -94,6 +95,7 @@ int wrapper_get_pageblock_flags_mask_init(void)
+               return -1;
+       return 0;
+ }
++EXPORT_SYMBOL_GPL(wrapper_get_pfnblock_flags_mask_init);
+ 
+ #else
+ 
+diff --git a/wrapper/random.c b/wrapper/random.c
+index c938ae35..eb41769c 100644
+--- a/wrapper/random.c
++++ b/wrapper/random.c
+@@ -55,6 +55,7 @@ end:
+       filp_close(file, current->files);
+       return ret;
+ }
++EXPORT_SYMBOL_GPL(wrapper_get_bootid);
+ 
+ #else
+ 
+@@ -62,5 +63,6 @@ int wrapper_get_bootid(char *bootid)
+ {
+       return -ENOSYS;
+ }
++EXPORT_SYMBOL_GPL(wrapper_get_bootid);
+ 
+ #endif
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0005-Unbreak-LTTng-for-kernel-5.7.patch 
lttng-modules-2.12.0/debian/patches/0005-Unbreak-LTTng-for-kernel-5.7.patch
--- lttng-modules-2.12.0/debian/patches/0005-Unbreak-LTTng-for-kernel-5.7.patch 
1970-01-01 00:00:00.000000000 +0000
+++ lttng-modules-2.12.0/debian/patches/0005-Unbreak-LTTng-for-kernel-5.7.patch 
2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,207 @@
+From ac198647c7132bc1e540e302724d79308bbd35af Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Mon, 4 May 2020 15:00:53 -0400
+Subject: [PATCH 5/8] Unbreak LTTng for kernel 5.7
+
+Linux commit 0bd476e6c67190b5eb7b6e105c8db8ff61103281 ("kallsyms:
+unexport kallsyms_lookup_name() and kallsyms_on_each_symbol()") breaks
+LTTng-modules by removing symbols used by the LTTng-modules out-of-tree
+tracer.
+
+I pointed this out when the change was originally considered before the
+5.7 merge window. This generated some discussion but it did not lead to
+any concrete proposal to fix the issue. [1]
+
+The commit has been merged in the 5.7 merge window. At that point, as
+maintainer of LTTng, I immediately raised a flag about this issue,
+proposing an alternative approach to solve this: expose the few symbols
+needed by LTTng to GPL modules. This was NACKed on the ground that the
+Linux kernel cannot export GPL symbols when there are no in-tree
+users. [2]
+
+Steven Rostedt has shown interest in merging LTTng-modules upstream.
+LTTng-modules being LGPL, this is very much doable. I have prepared a
+tree of LTTng-modules "for upstreaming" and sent it to him privately so
+he can review it. Even if in an ideal scenario LTTng-modules is merged
+for the following merge window, it leaves LTTng-modules broken on the
+5.7 kernel.
+
+In order to ensure that the LTTng-modules kernel tracer continues working
+for my end users on kernels 5.7 onwards, as a very last resort, this is
+with great reluctance that I created this fix for LTTng modules. It
+basically uses kprobes to lookup the kallsyms_lookup_name symbol, and
+continues using kallsyms_lookup_name as before.
+
+Link: https://lore.kernel.org/r/20200302192811.n6o5645rsib44vco@localhost [1]
+Link: 
https://lore.kernel.org/r/20200409193543.18115-1-mathieu.desnoy...@efficios.com 
[2]
+Link: https://lwn.net/Articles/817988/
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+CC: Thomas Gleixner <t...@linutronix.de>
+CC: Will Deacon <w...@kernel.org>
+CC: a...@linux-foundation.org
+CC: Greg Kroah-Hartman <gre...@linuxfoundation.org>
+CC: Masami Hiramatsu <mhira...@kernel.org>
+CC: rost...@goodmis.org
+CC: Alexei Starovoitov <a...@kernel.org>
+(cherry picked from commit d551a26d9a6bf87e80708ad8a35f49111442bf11)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ Makefile           |  1 +
+ README.md          |  1 +
+ wrapper/kallsyms.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++
+ wrapper/kallsyms.h | 20 +++++++++++--
+ 4 files changed, 90 insertions(+), 2 deletions(-)
+ create mode 100644 wrapper/kallsyms.c
+
+diff --git a/Makefile b/Makefile
+index 210923de..a9aff3f1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -77,6 +77,7 @@ ifneq ($(KERNELRELEASE),)
+   lttng-wrapper-objs := wrapper/page_alloc.o \
+                         wrapper/random.o \
+                         wrapper/trace-clock.o \
++                        wrapper/kallsyms.o \
+                         wrapper/irqdesc.o \
+                         wrapper/fdtable.o \
+                         lttng-wrapper-impl.o
+diff --git a/README.md b/README.md
+index 450f3630..7b04cd83 100644
+--- a/README.md
++++ b/README.md
+@@ -66,6 +66,7 @@ Make sure your target kernel has the following config 
options enabled:
+   - `CONFIG_TRACEPOINTS`: kernel tracepoint instrumentation
+      (enabled as a side-effect of any of the perf/ftrace/blktrace
+      instrumentation features).
++  - `CONFIG_KPROBES` (5.7+): use kallsyms for kernel 5.7 and newer.
+ 
+ 
+ ### Supported (optional) kernel config options
+diff --git a/wrapper/kallsyms.c b/wrapper/kallsyms.c
+new file mode 100644
+index 00000000..6af77f53
+--- /dev/null
++++ b/wrapper/kallsyms.c
+@@ -0,0 +1,70 @@
++/* SPDX-License-Identifier: (GPL-2.0-only OR LGPL-2.1-only)
++ *
++ * wrapper/kallsyms.c
++ *
++ * Wrapper around kallsyms. Using kprobes to get its address when available.
++ *
++ * Can we mainline LTTng already so we don't have to waste our time doing this
++ * kind of hack ?
++ *
++ * Copyright (C) 2020 Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
++ */
++
++#include <linux/kprobes.h>
++#include <linux/module.h>
++#include <wrapper/kallsyms.h>
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++
++#ifndef CONFIG_KPROBES
++# error "LTTng-modules requires CONFIG_KPROBES on kernels >= 5.7.0"
++#endif
++
++static
++unsigned long (*kallsyms_lookup_name_sym)(const char *name);
++
++static
++int dummy_kprobe_handler(struct kprobe *p, struct pt_regs *regs)
++{
++      return 0;
++}
++
++static
++unsigned long do_get_kallsyms(void)
++{
++      struct kprobe probe;
++      int ret;
++      unsigned long addr;
++
++      memset(&probe, 0, sizeof(probe));
++      probe.pre_handler = dummy_kprobe_handler;
++      probe.symbol_name = "kallsyms_lookup_name";
++      ret = register_kprobe(&probe);
++      if (ret)
++              return 0;
++      addr = (unsigned long)probe.addr;
++#ifdef CONFIG_ARM
++#ifdef CONFIG_THUMB2_KERNEL
++      if (addr)
++              addr |= 1; /* set bit 0 in address for thumb mode */
++#endif
++#endif
++      unregister_kprobe(&probe);
++      return addr;
++}
++
++unsigned long wrapper_kallsyms_lookup_name(const char *name)
++{
++      if (!kallsyms_lookup_name_sym) {
++              kallsyms_lookup_name_sym = (void *)do_get_kallsyms();
++      }
++      if (kallsyms_lookup_name_sym)
++              return kallsyms_lookup_name_sym(name);
++      else {
++              printk_once(KERN_WARNING "LTTng requires 
kallsyms_lookup_name\n");
++              return 0;
++      }
++}
++EXPORT_SYMBOL_GPL(wrapper_kallsyms_lookup_name);
++
++#endif
+diff --git a/wrapper/kallsyms.h b/wrapper/kallsyms.h
+index e60fe363..5f48847f 100644
+--- a/wrapper/kallsyms.h
++++ b/wrapper/kallsyms.h
+@@ -14,6 +14,7 @@
+ #define _LTTNG_WRAPPER_KALLSYMS_H
+ 
+ #include <linux/kallsyms.h>
++#include <linux/version.h>
+ 
+ /*
+  * PowerPC ABIv1 needs KALLSYMS_ALL to get the function descriptor,
+@@ -25,12 +26,26 @@
+ # endif
+ #endif
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++
++unsigned long wrapper_kallsyms_lookup_name(const char *name);
++
++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
++static inline
++unsigned long wrapper_kallsyms_lookup_name(const char *name)
++{
++      return kallsyms_lookup_name(name);
++}
++
++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
+ static inline
+ unsigned long kallsyms_lookup_funcptr(const char *name)
+ {
+       unsigned long addr;
+ 
+-      addr = kallsyms_lookup_name(name);
++      addr = wrapper_kallsyms_lookup_name(name);
+ #ifdef CONFIG_ARM
+ #ifdef CONFIG_THUMB2_KERNEL
+       if (addr)
+@@ -43,6 +58,7 @@ unsigned long kallsyms_lookup_funcptr(const char *name)
+ static inline
+ unsigned long kallsyms_lookup_dataptr(const char *name)
+ {
+-      return kallsyms_lookup_name(name);
++      return wrapper_kallsyms_lookup_name(name);
+ }
++
+ #endif /* _LTTNG_WRAPPER_KALLSYMS_H */
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0006-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
 
lttng-modules-2.12.0/debian/patches/0006-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
--- 
lttng-modules-2.12.0/debian/patches/0006-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
 1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0006-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
 2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,852 @@
+From 15a73ec9dac1e4eaf8830b87b41eaeebedcce0b6 Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Date: Tue, 5 May 2020 13:38:31 -0400
+Subject: [PATCH 6/8] Update for kernel 5.7: use vmalloc_sync_mappings on
+ kernels >= 5.7
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+(cherry picked from commit ea53823c42a70a80566a340834e2b00e650406b9)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ lib/ringbuffer/ring_buffer_backend.c |  4 +--
+ lttng-abi.c                          |  4 +--
+ lttng-context-callstack.c            |  2 +-
+ lttng-context-cgroup-ns.c            |  2 +-
+ lttng-context-cpu-id.c               |  2 +-
+ lttng-context-egid.c                 |  2 +-
+ lttng-context-euid.c                 |  2 +-
+ lttng-context-gid.c                  |  2 +-
+ lttng-context-hostname.c             |  2 +-
+ lttng-context-interruptible.c        |  2 +-
+ lttng-context-ipc-ns.c               |  2 +-
+ lttng-context-migratable.c           |  2 +-
+ lttng-context-mnt-ns.c               |  2 +-
+ lttng-context-need-reschedule.c      |  2 +-
+ lttng-context-net-ns.c               |  2 +-
+ lttng-context-nice.c                 |  2 +-
+ lttng-context-perf-counters.c        |  2 +-
+ lttng-context-pid-ns.c               |  2 +-
+ lttng-context-pid.c                  |  2 +-
+ lttng-context-ppid.c                 |  2 +-
+ lttng-context-preemptible.c          |  2 +-
+ lttng-context-prio.c                 |  2 +-
+ lttng-context-procname.c             |  2 +-
+ lttng-context-sgid.c                 |  2 +-
+ lttng-context-suid.c                 |  2 +-
+ lttng-context-tid.c                  |  2 +-
+ lttng-context-uid.c                  |  2 +-
+ lttng-context-user-ns.c              |  2 +-
+ lttng-context-uts-ns.c               |  2 +-
+ lttng-context-vegid.c                |  2 +-
+ lttng-context-veuid.c                |  2 +-
+ lttng-context-vgid.c                 |  2 +-
+ lttng-context-vpid.c                 |  2 +-
+ lttng-context-vppid.c                |  2 +-
+ lttng-context-vsgid.c                |  2 +-
+ lttng-context-vsuid.c                |  2 +-
+ lttng-context-vtid.c                 |  2 +-
+ lttng-context-vuid.c                 |  2 +-
+ lttng-context.c                      |  2 +-
+ lttng-events.c                       | 10 +++---
+ lttng-ring-buffer-client.h           |  4 +--
+ lttng-ring-buffer-metadata-client.h  |  4 +--
+ lttng-syscalls.c                     |  2 +-
+ probes/lttng-kprobes.c               |  2 +-
+ probes/lttng-kretprobes.c            |  2 +-
+ probes/lttng-tracepoint-event-impl.h |  4 +--
+ probes/lttng-uprobes.c               |  2 +-
+ probes/lttng.c                       |  2 +-
+ tests/probes/lttng-test.c            |  2 +-
+ wrapper/vmalloc.h                    | 49 ++++++++++++++++++++++++++--
+ 50 files changed, 104 insertions(+), 61 deletions(-)
+
+diff --git a/lib/ringbuffer/ring_buffer_backend.c 
b/lib/ringbuffer/ring_buffer_backend.c
+index d4bec25f..d232b7f2 100644
+--- a/lib/ringbuffer/ring_buffer_backend.c
++++ b/lib/ringbuffer/ring_buffer_backend.c
+@@ -17,7 +17,7 @@
+ #include <linux/vmalloc.h>
+ 
+ #include <wrapper/mm.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/ringbuffer/config.h>
+ #include <wrapper/ringbuffer/backend.h>
+ #include <wrapper/ringbuffer/frontend.h>
+@@ -156,7 +156,7 @@ int lib_ring_buffer_backend_allocate(const struct 
lib_ring_buffer_config *config
+        * If kmalloc ever uses vmalloc underneath, make sure the buffer pages
+        * will not fault.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       wrapper_clear_current_oom_origin();
+       vfree(pages);
+       return 0;
+diff --git a/lttng-abi.c b/lttng-abi.c
+index b63e3764..826ecab4 100644
+--- a/lttng-abi.c
++++ b/lttng-abi.c
+@@ -30,7 +30,7 @@
+ #include <linux/uaccess.h>
+ #include <linux/slab.h>
+ #include <linux/err.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/ringbuffer/vfs.h>
+ #include <wrapper/ringbuffer/backend.h>
+ #include <wrapper/ringbuffer/frontend.h>
+@@ -1938,7 +1938,7 @@ int __init lttng_abi_init(void)
+ {
+       int ret = 0;
+ 
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       lttng_clock_ref();
+ 
+       ret = lttng_tp_mempool_init();
+diff --git a/lttng-context-callstack.c b/lttng-context-callstack.c
+index 195990a6..ba35a394 100644
+--- a/lttng-context-callstack.c
++++ b/lttng-context-callstack.c
+@@ -141,7 +141,7 @@ int __lttng_add_callstack_generic(struct lttng_ctx **ctx,
+       field->record = lttng_callstack_record;
+       field->priv = fdata;
+       field->destroy = lttng_callstack_destroy;
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ 
+ error_create:
+diff --git a/lttng-context-cgroup-ns.c b/lttng-context-cgroup-ns.c
+index 81486e51..f324b7e7 100644
+--- a/lttng-context-cgroup-ns.c
++++ b/lttng-context-cgroup-ns.c
+@@ -97,7 +97,7 @@ int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = cgroup_ns_record;
+       field->get_value = cgroup_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_cgroup_ns_to_ctx);
+diff --git a/lttng-context-cpu-id.c b/lttng-context-cpu-id.c
+index 37782251..6e2f3f45 100644
+--- a/lttng-context-cpu-id.c
++++ b/lttng-context-cpu-id.c
+@@ -68,7 +68,7 @@ int lttng_add_cpu_id_to_ctx(struct lttng_ctx **ctx)
+       field->record = cpu_id_record;
+       field->get_value = cpu_id_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_cpu_id_to_ctx);
+diff --git a/lttng-context-egid.c b/lttng-context-egid.c
+index 51536e28..bdcebb98 100644
+--- a/lttng-context-egid.c
++++ b/lttng-context-egid.c
+@@ -70,7 +70,7 @@ int lttng_add_egid_to_ctx(struct lttng_ctx **ctx)
+       field->record = egid_record;
+       field->get_value = egid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_egid_to_ctx);
+diff --git a/lttng-context-euid.c b/lttng-context-euid.c
+index 1bcd53f6..c2b8dcd7 100644
+--- a/lttng-context-euid.c
++++ b/lttng-context-euid.c
+@@ -70,7 +70,7 @@ int lttng_add_euid_to_ctx(struct lttng_ctx **ctx)
+       field->record = euid_record;
+       field->get_value = euid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_euid_to_ctx);
+diff --git a/lttng-context-gid.c b/lttng-context-gid.c
+index da54207e..c355e8ca 100644
+--- a/lttng-context-gid.c
++++ b/lttng-context-gid.c
+@@ -70,7 +70,7 @@ int lttng_add_gid_to_ctx(struct lttng_ctx **ctx)
+       field->record = gid_record;
+       field->get_value = gid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_gid_to_ctx);
+diff --git a/lttng-context-hostname.c b/lttng-context-hostname.c
+index e485aa97..17dbd577 100644
+--- a/lttng-context-hostname.c
++++ b/lttng-context-hostname.c
+@@ -101,7 +101,7 @@ int lttng_add_hostname_to_ctx(struct lttng_ctx **ctx)
+       field->record = hostname_record;
+       field->get_value = hostname_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_hostname_to_ctx);
+diff --git a/lttng-context-interruptible.c b/lttng-context-interruptible.c
+index f3da1990..8bd279a3 100644
+--- a/lttng-context-interruptible.c
++++ b/lttng-context-interruptible.c
+@@ -75,7 +75,7 @@ int lttng_add_interruptible_to_ctx(struct lttng_ctx **ctx)
+       field->record = interruptible_record;
+       field->get_value = interruptible_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_interruptible_to_ctx);
+diff --git a/lttng-context-ipc-ns.c b/lttng-context-ipc-ns.c
+index 78d59660..40b901b4 100644
+--- a/lttng-context-ipc-ns.c
++++ b/lttng-context-ipc-ns.c
+@@ -96,7 +96,7 @@ int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = ipc_ns_record;
+       field->get_value = ipc_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_ipc_ns_to_ctx);
+diff --git a/lttng-context-migratable.c b/lttng-context-migratable.c
+index e3d8ede5..65154b8b 100644
+--- a/lttng-context-migratable.c
++++ b/lttng-context-migratable.c
+@@ -68,7 +68,7 @@ int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx)
+       field->record = migratable_record;
+       field->get_value = migratable_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_migratable_to_ctx);
+diff --git a/lttng-context-mnt-ns.c b/lttng-context-mnt-ns.c
+index b5bb955a..cb59776c 100644
+--- a/lttng-context-mnt-ns.c
++++ b/lttng-context-mnt-ns.c
+@@ -98,7 +98,7 @@ int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = mnt_ns_record;
+       field->get_value = mnt_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_mnt_ns_to_ctx);
+diff --git a/lttng-context-need-reschedule.c b/lttng-context-need-reschedule.c
+index f29fb28d..94efaa5c 100644
+--- a/lttng-context-need-reschedule.c
++++ b/lttng-context-need-reschedule.c
+@@ -68,7 +68,7 @@ int lttng_add_need_reschedule_to_ctx(struct lttng_ctx **ctx)
+       field->record = need_reschedule_record;
+       field->get_value = need_reschedule_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_need_reschedule_to_ctx);
+diff --git a/lttng-context-net-ns.c b/lttng-context-net-ns.c
+index 6694037f..37de09f7 100644
+--- a/lttng-context-net-ns.c
++++ b/lttng-context-net-ns.c
+@@ -97,7 +97,7 @@ int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = net_ns_record;
+       field->get_value = net_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_net_ns_to_ctx);
+diff --git a/lttng-context-nice.c b/lttng-context-nice.c
+index 563e8058..acaba855 100644
+--- a/lttng-context-nice.c
++++ b/lttng-context-nice.c
+@@ -68,7 +68,7 @@ int lttng_add_nice_to_ctx(struct lttng_ctx **ctx)
+       field->record = nice_record;
+       field->get_value = nice_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_nice_to_ctx);
+diff --git a/lttng-context-perf-counters.c b/lttng-context-perf-counters.c
+index 43c4077b..6b04d123 100644
+--- a/lttng-context-perf-counters.c
++++ b/lttng-context-perf-counters.c
+@@ -321,7 +321,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
+       field->u.perf_counter = perf_field;
+       lttng_context_update(*ctx);
+ 
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ 
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+diff --git a/lttng-context-pid-ns.c b/lttng-context-pid-ns.c
+index f039f260..ccf629d4 100644
+--- a/lttng-context-pid-ns.c
++++ b/lttng-context-pid-ns.c
+@@ -98,7 +98,7 @@ int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = pid_ns_record;
+       field->get_value = pid_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_pid_ns_to_ctx);
+diff --git a/lttng-context-pid.c b/lttng-context-pid.c
+index b3caabb4..326eabe8 100644
+--- a/lttng-context-pid.c
++++ b/lttng-context-pid.c
+@@ -68,7 +68,7 @@ int lttng_add_pid_to_ctx(struct lttng_ctx **ctx)
+       field->record = pid_record;
+       field->get_value = pid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_pid_to_ctx);
+diff --git a/lttng-context-ppid.c b/lttng-context-ppid.c
+index ef84ad11..ff25288f 100644
+--- a/lttng-context-ppid.c
++++ b/lttng-context-ppid.c
+@@ -90,7 +90,7 @@ int lttng_add_ppid_to_ctx(struct lttng_ctx **ctx)
+       field->record = ppid_record;
+       field->get_value = ppid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_ppid_to_ctx);
+diff --git a/lttng-context-preemptible.c b/lttng-context-preemptible.c
+index 328f2a43..867805b7 100644
+--- a/lttng-context-preemptible.c
++++ b/lttng-context-preemptible.c
+@@ -86,7 +86,7 @@ int lttng_add_preemptible_to_ctx(struct lttng_ctx **ctx)
+       field->record = preemptible_record;
+       field->get_value = preemptible_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_preemptible_to_ctx);
+diff --git a/lttng-context-prio.c b/lttng-context-prio.c
+index b5d21e7e..367f7bd6 100644
+--- a/lttng-context-prio.c
++++ b/lttng-context-prio.c
+@@ -89,7 +89,7 @@ int lttng_add_prio_to_ctx(struct lttng_ctx **ctx)
+       field->record = prio_record;
+       field->get_value = prio_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_prio_to_ctx);
+diff --git a/lttng-context-procname.c b/lttng-context-procname.c
+index 54007d15..8f18ca2c 100644
+--- a/lttng-context-procname.c
++++ b/lttng-context-procname.c
+@@ -72,7 +72,7 @@ int lttng_add_procname_to_ctx(struct lttng_ctx **ctx)
+       field->record = procname_record;
+       field->get_value = procname_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_procname_to_ctx);
+diff --git a/lttng-context-sgid.c b/lttng-context-sgid.c
+index 61c8d533..2a58cbd4 100644
+--- a/lttng-context-sgid.c
++++ b/lttng-context-sgid.c
+@@ -70,7 +70,7 @@ int lttng_add_sgid_to_ctx(struct lttng_ctx **ctx)
+       field->record = sgid_record;
+       field->get_value = sgid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_sgid_to_ctx);
+diff --git a/lttng-context-suid.c b/lttng-context-suid.c
+index 66d3ef5a..ab3e2a95 100644
+--- a/lttng-context-suid.c
++++ b/lttng-context-suid.c
+@@ -70,7 +70,7 @@ int lttng_add_suid_to_ctx(struct lttng_ctx **ctx)
+       field->record = suid_record;
+       field->get_value = suid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_suid_to_ctx);
+diff --git a/lttng-context-tid.c b/lttng-context-tid.c
+index d2a20e60..f6defc46 100644
+--- a/lttng-context-tid.c
++++ b/lttng-context-tid.c
+@@ -71,7 +71,7 @@ int lttng_add_tid_to_ctx(struct lttng_ctx **ctx)
+       field->record = tid_record;
+       field->get_value = tid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_tid_to_ctx);
+diff --git a/lttng-context-uid.c b/lttng-context-uid.c
+index 5f11de23..55938525 100644
+--- a/lttng-context-uid.c
++++ b/lttng-context-uid.c
+@@ -70,7 +70,7 @@ int lttng_add_uid_to_ctx(struct lttng_ctx **ctx)
+       field->record = uid_record;
+       field->get_value = uid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_uid_to_ctx);
+diff --git a/lttng-context-user-ns.c b/lttng-context-user-ns.c
+index 746e4d9d..0ed62e36 100644
+--- a/lttng-context-user-ns.c
++++ b/lttng-context-user-ns.c
+@@ -82,7 +82,7 @@ int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = user_ns_record;
+       field->get_value = user_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_user_ns_to_ctx);
+diff --git a/lttng-context-uts-ns.c b/lttng-context-uts-ns.c
+index 7352a3df..283bc73e 100644
+--- a/lttng-context-uts-ns.c
++++ b/lttng-context-uts-ns.c
+@@ -96,7 +96,7 @@ int lttng_add_uts_ns_to_ctx(struct lttng_ctx **ctx)
+       field->record = uts_ns_record;
+       field->get_value = uts_ns_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_uts_ns_to_ctx);
+diff --git a/lttng-context-vegid.c b/lttng-context-vegid.c
+index 604da2a0..1431dacb 100644
+--- a/lttng-context-vegid.c
++++ b/lttng-context-vegid.c
+@@ -70,7 +70,7 @@ int lttng_add_vegid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vegid_record;
+       field->get_value = vegid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vegid_to_ctx);
+diff --git a/lttng-context-veuid.c b/lttng-context-veuid.c
+index 983ae6a3..a1b5b70e 100644
+--- a/lttng-context-veuid.c
++++ b/lttng-context-veuid.c
+@@ -70,7 +70,7 @@ int lttng_add_veuid_to_ctx(struct lttng_ctx **ctx)
+       field->record = veuid_record;
+       field->get_value = veuid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_veuid_to_ctx);
+diff --git a/lttng-context-vgid.c b/lttng-context-vgid.c
+index e08c77df..0eed24e1 100644
+--- a/lttng-context-vgid.c
++++ b/lttng-context-vgid.c
+@@ -70,7 +70,7 @@ int lttng_add_vgid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vgid_record;
+       field->get_value = vgid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vgid_to_ctx);
+diff --git a/lttng-context-vpid.c b/lttng-context-vpid.c
+index 982ce558..b5b6ce0a 100644
+--- a/lttng-context-vpid.c
++++ b/lttng-context-vpid.c
+@@ -83,7 +83,7 @@ int lttng_add_vpid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vpid_record;
+       field->get_value = vpid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vpid_to_ctx);
+diff --git a/lttng-context-vppid.c b/lttng-context-vppid.c
+index 66d63824..347ac634 100644
+--- a/lttng-context-vppid.c
++++ b/lttng-context-vppid.c
+@@ -112,7 +112,7 @@ int lttng_add_vppid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vppid_record;
+       field->get_value = vppid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vppid_to_ctx);
+diff --git a/lttng-context-vsgid.c b/lttng-context-vsgid.c
+index aca5eda0..3daf889a 100644
+--- a/lttng-context-vsgid.c
++++ b/lttng-context-vsgid.c
+@@ -70,7 +70,7 @@ int lttng_add_vsgid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vsgid_record;
+       field->get_value = vsgid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vsgid_to_ctx);
+diff --git a/lttng-context-vsuid.c b/lttng-context-vsuid.c
+index 66c1300c..d7fb0db4 100644
+--- a/lttng-context-vsuid.c
++++ b/lttng-context-vsuid.c
+@@ -70,7 +70,7 @@ int lttng_add_vsuid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vsuid_record;
+       field->get_value = vsuid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vsuid_to_ctx);
+diff --git a/lttng-context-vtid.c b/lttng-context-vtid.c
+index 8fd68a8c..e81ba0e2 100644
+--- a/lttng-context-vtid.c
++++ b/lttng-context-vtid.c
+@@ -83,7 +83,7 @@ int lttng_add_vtid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vtid_record;
+       field->get_value = vtid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vtid_to_ctx);
+diff --git a/lttng-context-vuid.c b/lttng-context-vuid.c
+index 6ae575f5..33e22d35 100644
+--- a/lttng-context-vuid.c
++++ b/lttng-context-vuid.c
+@@ -70,7 +70,7 @@ int lttng_add_vuid_to_ctx(struct lttng_ctx **ctx)
+       field->record = vuid_record;
+       field->get_value = vuid_get_value;
+       lttng_context_update(*ctx);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(lttng_add_vuid_to_ctx);
+diff --git a/lttng-context.c b/lttng-context.c
+index eb4534cb..a6d4ee6f 100644
+--- a/lttng-context.c
++++ b/lttng-context.c
+@@ -11,7 +11,7 @@
+ #include <linux/list.h>
+ #include <linux/mutex.h>
+ #include <linux/slab.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <lttng-events.h>
+ #include <lttng-tracer.h>
+ 
+diff --git a/lttng-events.c b/lttng-events.c
+index 8e8e65a5..5a64f5b2 100644
+--- a/lttng-events.c
++++ b/lttng-events.c
+@@ -30,7 +30,7 @@
+ #include <linux/dmi.h>
+ 
+ #include <wrapper/uuid.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/random.h>
+ #include <wrapper/tracepoint.h>
+ #include <wrapper/list.h>
+@@ -2753,9 +2753,9 @@ end:
+  * Registers a transport which can be used as output to extract the data out 
of
+  * LTTng. The module calling this registration function must ensure that no
+  * trap-inducing code will be executed by the transport functions. E.g.
+- * vmalloc_sync_all() must be called between a vmalloc and the moment the 
memory
++ * vmalloc_sync_mappings() must be called between a vmalloc and the moment 
the memory
+  * is made visible to the transport function. This registration acts as a
+- * vmalloc_sync_all. Therefore, only if the module allocates virtual memory
++ * vmalloc_sync_mappings. Therefore, only if the module allocates virtual 
memory
+  * after its registration must it synchronize the TLBs.
+  */
+ void lttng_transport_register(struct lttng_transport *transport)
+@@ -2763,9 +2763,9 @@ void lttng_transport_register(struct lttng_transport 
*transport)
+       /*
+        * Make sure no page fault can be triggered by the module about to be
+        * registered. We deal with this here so we don't have to call
+-       * vmalloc_sync_all() in each module's init.
++       * vmalloc_sync_mappings() in each module's init.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       mutex_lock(&sessions_mutex);
+       list_add_tail(&transport->node, &lttng_transport_list);
+diff --git a/lttng-ring-buffer-client.h b/lttng-ring-buffer-client.h
+index d5c512c5..ff628308 100644
+--- a/lttng-ring-buffer-client.h
++++ b/lttng-ring-buffer-client.h
+@@ -10,7 +10,7 @@
+ #include <linux/module.h>
+ #include <linux/types.h>
+ #include <lib/bitfield.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/trace-clock.h>
+ #include <lttng-events.h>
+ #include <lttng-tracer.h>
+@@ -766,7 +766,7 @@ static int __init lttng_ring_buffer_client_init(void)
+        * This vmalloc sync all also takes care of the lib ring buffer
+        * vmalloc'd module pages when it is built as a module into LTTng.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       lttng_transport_register(&lttng_relay_transport);
+       return 0;
+ }
+diff --git a/lttng-ring-buffer-metadata-client.h 
b/lttng-ring-buffer-metadata-client.h
+index 17ffd759..a098b8d8 100644
+--- a/lttng-ring-buffer-metadata-client.h
++++ b/lttng-ring-buffer-metadata-client.h
+@@ -9,7 +9,7 @@
+ 
+ #include <linux/module.h>
+ #include <linux/types.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <lttng-events.h>
+ #include <lttng-tracer.h>
+ 
+@@ -428,7 +428,7 @@ static int __init lttng_ring_buffer_client_init(void)
+        * This vmalloc sync all also takes care of the lib ring buffer
+        * vmalloc'd module pages when it is built as a module into LTTng.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       lttng_transport_register(&lttng_relay_transport);
+       return 0;
+ }
+diff --git a/lttng-syscalls.c b/lttng-syscalls.c
+index fb14f6b0..97f1ba94 100644
+--- a/lttng-syscalls.c
++++ b/lttng-syscalls.c
+@@ -760,7 +760,7 @@ int lttng_syscalls_register(struct lttng_channel *chan, 
void *filter)
+       struct lttng_kernel_event ev;
+       int ret;
+ 
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       if (!chan->sc_table) {
+               /* create syscall table mapping syscall to events */
+diff --git a/probes/lttng-kprobes.c b/probes/lttng-kprobes.c
+index c0a15e47..a44eaa11 100644
+--- a/probes/lttng-kprobes.c
++++ b/probes/lttng-kprobes.c
+@@ -132,7 +132,7 @@ int lttng_kprobes_register(const char *name,
+        * Well.. kprobes itself puts the page fault handler on the blacklist,
+        * but we can never be too careful.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       ret = register_kprobe(&event->u.kprobe.kp);
+       if (ret)
+diff --git a/probes/lttng-kretprobes.c b/probes/lttng-kretprobes.c
+index 4b18d460..ab98ff22 100644
+--- a/probes/lttng-kretprobes.c
++++ b/probes/lttng-kretprobes.c
+@@ -221,7 +221,7 @@ int lttng_kretprobes_register(const char *name,
+        * Well.. kprobes itself puts the page fault handler on the blacklist,
+        * but we can never be too careful.
+        */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       ret = register_kretprobe(&lttng_krp->krp);
+       if (ret)
+diff --git a/probes/lttng-tracepoint-event-impl.h 
b/probes/lttng-tracepoint-event-impl.h
+index 321cdfa4..77b86389 100644
+--- a/probes/lttng-tracepoint-event-impl.h
++++ b/probes/lttng-tracepoint-event-impl.h
+@@ -15,7 +15,7 @@
+ #include <probes/lttng.h>
+ #include <probes/lttng-types.h>
+ #include <probes/lttng-probe-user.h>
+-#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_all() */
++#include <wrapper/vmalloc.h>  /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/ringbuffer/frontend_types.h>
+ #include <wrapper/ringbuffer/backend.h>
+ #include <wrapper/rcu.h>
+@@ -1391,7 +1391,7 @@ static __used struct lttng_probe_desc 
TP_ID(__probe_desc___, TRACE_SYSTEM) = {
+ #ifndef TP_MODULE_NOINIT
+ static int TP_ID(__lttng_events_init__, TRACE_SYSTEM)(void)
+ {
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       return lttng_probe_register(&TP_ID(__probe_desc___, TRACE_SYSTEM));
+ }
+ 
+diff --git a/probes/lttng-uprobes.c b/probes/lttng-uprobes.c
+index 64d8237c..bc101289 100644
+--- a/probes/lttng-uprobes.c
++++ b/probes/lttng-uprobes.c
+@@ -161,7 +161,7 @@ int lttng_uprobes_add_callsite(struct lttng_event *event,
+       }
+ 
+       /* Ensure the memory we just allocated don't trigger page faults. */
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       uprobe_handler->event = event;
+       uprobe_handler->up_consumer.handler = lttng_uprobes_handler_pre;
+diff --git a/probes/lttng.c b/probes/lttng.c
+index 383202c6..05bc1388 100644
+--- a/probes/lttng.c
++++ b/probes/lttng.c
+@@ -116,7 +116,7 @@ int __init lttng_logger_init(void)
+ {
+       int ret = 0;
+ 
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+ 
+       /* /dev/lttng-logger */
+       ret = misc_register(&logger_dev);
+diff --git a/tests/probes/lttng-test.c b/tests/probes/lttng-test.c
+index e3476393..b450e7d7 100644
+--- a/tests/probes/lttng-test.c
++++ b/tests/probes/lttng-test.c
+@@ -97,7 +97,7 @@ int __init lttng_test_init(void)
+       int ret = 0;
+ 
+       (void) wrapper_lttng_fixup_sig(THIS_MODULE);
+-      wrapper_vmalloc_sync_all();
++      wrapper_vmalloc_sync_mappings();
+       lttng_test_filter_event_dentry =
+                       proc_create_data(LTTNG_TEST_FILTER_EVENT_FILE,
+                               S_IRUGO | S_IWUGO, NULL,
+diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
+index 0c3eb86b..54715b57 100644
+--- a/wrapper/vmalloc.h
++++ b/wrapper/vmalloc.h
+@@ -21,8 +21,35 @@
+ #include <linux/kallsyms.h>
+ #include <wrapper/kallsyms.h>
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++
++static inline
++void wrapper_vmalloc_sync_mappings(void)
++{
++      void (*vmalloc_sync_mappings_sym)(void);
++
++      vmalloc_sync_mappings_sym = (void *) 
kallsyms_lookup_funcptr("vmalloc_sync_mappings");
++      if (vmalloc_sync_mappings_sym) {
++              vmalloc_sync_mappings_sym();
++      } else {
++#ifdef CONFIG_X86
++              /*
++               * Only x86 needs vmalloc_sync_mappings to make sure LTTng does 
not
++               * trigger recursive page faults.
++               */
++              printk_once(KERN_WARNING "LTTng: vmalloc_sync_mappings symbol 
lookup failed.\n");
++              printk_once(KERN_WARNING "Page fault handler and NMI tracing 
might trigger faults.\n");
++#endif
++      }
++}
++
++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
++/*
++ * Map vmalloc_sync_mappings to vmalloc_sync_all() on kernels before 5.7.
++ */
+ static inline
+-void wrapper_vmalloc_sync_all(void)
++void wrapper_vmalloc_sync_mappings(void)
+ {
+       void (*vmalloc_sync_all_sym)(void);
+ 
+@@ -40,13 +67,29 @@ void wrapper_vmalloc_sync_all(void)
+ #endif
+       }
+ }
++
++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
+ #else
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
++
++static inline
++void wrapper_vmalloc_sync_mappings(void)
++{
++      return vmalloc_sync_mappings();
++}
++
++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
+ static inline
+-void wrapper_vmalloc_sync_all(void)
++void wrapper_vmalloc_sync_mappings(void)
+ {
+       return vmalloc_sync_all();
+ }
++
++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
+ #endif
+ 
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
+@@ -61,7 +104,7 @@ void *lttng_kvmalloc_node(unsigned long size, gfp_t flags, 
int node)
+                * Make sure we don't trigger recursive page faults in the
+                * tracing fast path.
+                */
+-              wrapper_vmalloc_sync_all();
++              wrapper_vmalloc_sync_mappings();
+       }
+       return ret;
+ }
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0007-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
 
lttng-modules-2.12.0/debian/patches/0007-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
--- 
lttng-modules-2.12.0/debian/patches/0007-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
 1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0007-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
 2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,31 @@
+From 402e8daf4f5099da566334e4eafd5eec741d83d0 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjean...@efficios.com>
+Date: Wed, 6 May 2020 11:03:32 -0400
+Subject: [PATCH 7/8] Fix: missing wrapper rename to
+ wrapper_vmalloc_sync_mappings
+
+Signed-off-by: Michael Jeanson <mjean...@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Change-Id: Idf7082a980c5a604bfef5c69906678b5083a9bbf
+(cherry picked from commit 4d1817c129310945bf0b8227ebc0fbb4f6299dc7)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ wrapper/vmalloc.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
+index 54715b57..5d0b3898 100644
+--- a/wrapper/vmalloc.h
++++ b/wrapper/vmalloc.h
+@@ -216,7 +216,7 @@ void *lttng_kvmalloc_node(unsigned long size, gfp_t flags, 
int node)
+                * Make sure we don't trigger recursive page faults in the
+                * tracing fast path.
+                */
+-              wrapper_vmalloc_sync_all();
++              wrapper_vmalloc_sync_mappings();
+       }
+       return ret;
+ }
+-- 
+2.25.1
+
diff -Nru 
lttng-modules-2.12.0/debian/patches/0008-fix-add-missing-guid_t-type-to-wrapper.patch
 
lttng-modules-2.12.0/debian/patches/0008-fix-add-missing-guid_t-type-to-wrapper.patch
--- 
lttng-modules-2.12.0/debian/patches/0008-fix-add-missing-guid_t-type-to-wrapper.patch
       1970-01-01 00:00:00.000000000 +0000
+++ 
lttng-modules-2.12.0/debian/patches/0008-fix-add-missing-guid_t-type-to-wrapper.patch
       2020-05-14 14:25:14.000000000 +0000
@@ -0,0 +1,31 @@
+From ebfeba480a82fbd3448629c5b5a27eca7d509564 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjean...@efficios.com>
+Date: Wed, 6 May 2020 11:11:29 -0400
+Subject: [PATCH 8/8] fix: add missing guid_t type to wrapper
+
+Signed-off-by: Michael Jeanson <mjean...@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com>
+Change-Id: I0de39c24a7925b580fabbdaa12dbe05c43cfcd98
+(cherry picked from commit d61b5f8337e30bb7601b4ca686fb904bfdb17ed7)
+Signed-off-by: Paolo Pisati <paolo.pis...@canonical.com>
+---
+ wrapper/uuid.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/wrapper/uuid.h b/wrapper/uuid.h
+index 74946e23..d8ac53d3 100644
+--- a/wrapper/uuid.h
++++ b/wrapper/uuid.h
+@@ -18,6 +18,9 @@ void lttng_guid_gen(guid_t *u)
+       return guid_gen(u);
+ }
+ #else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
++
++typedef uuid_le guid_t;
++
+ static inline
+ void lttng_guid_gen(guid_t *u)
+ {
+-- 
+2.25.1
+
diff -Nru lttng-modules-2.12.0/debian/patches/series 
lttng-modules-2.12.0/debian/patches/series
--- lttng-modules-2.12.0/debian/patches/series  2019-09-17 18:08:02.000000000 
+0000
+++ lttng-modules-2.12.0/debian/patches/series  2020-05-14 14:25:14.000000000 
+0000
@@ -1 +1,9 @@
 fix-linux-rt-4.9-sched.patch
+0001-instrumentation-update-mm_vmscan-for-kernel-5.7.0.patch
+0002-instrumentation-update-x86-kvm-instrumentation-for-k.patch
+0003-Introduce-lttng_guid_gen-wrapper-for-kernels-5.7.0.patch
+0004-Move-lttng-wrappers-into-own-module.patch
+0005-Unbreak-LTTng-for-kernel-5.7.patch
+0006-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
+0007-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
+0008-fix-add-missing-guid_t-type-to-wrapper.patch

Reply via email to