fix: mm: introduce vma->vm_flags wrapper functions (v6.3)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 7 Mar 2023 16:41:14 +0000 (11:41 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 8 Mar 2023 18:49:36 +0000 (13:49 -0500)
See upstream commit :

  commit bc292ab00f6c7a661a8a605c714e8a148f629ef6
  Author: Suren Baghdasaryan <surenb@google.com>
  Date:   Thu Jan 26 11:37:47 2023 -0800

    mm: introduce vma->vm_flags wrapper functions

    vm_flags are among VMA attributes which affect decisions like VMA merging
    and splitting.  Therefore all vm_flags modifications are performed after
    taking exclusive mmap_lock to prevent vm_flags updates racing with such
    operations.  Introduce modifier functions for vm_flags to be used whenever
    flags are updated.  This way we can better check and control correct
    locking behavior during these updates.

Change-Id: I2cf662420d9d7748e5e310d3ea4bac98ba7d7f94
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/wrapper/mm.h
src/lib/ringbuffer/ring_buffer_mmap.c

index f7e8e87e6ee17fe8580ab598bd15309b40bd6eed..047d9368971527e68b1c7d7e15cc2dae383cdb41 100644 (file)
 
 #include <lttng/kernel-version.h>
 
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,3,0))
+static inline
+void wrapper_vm_flags_set(struct vm_area_struct *vma,
+               vm_flags_t flags)
+{
+       vm_flags_set(vma, flags);
+}
+#else
+static inline
+void wrapper_vm_flags_set(struct vm_area_struct *vma,
+               vm_flags_t flags)
+{
+       vma->vm_flags |= flags;
+}
+#endif
+
 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,6,0) \
                || LTTNG_UBUNTU_KERNEL_RANGE(4,4,25,44, 4,5,0,0))
 
index 25e2d8d5e60d9923ad9edf757914fbb8d6242e34..d24b76a3c17be01c579791294250d2be55e7b39c 100644 (file)
@@ -17,6 +17,8 @@
 #include <ringbuffer/frontend.h>
 #include <ringbuffer/vfs.h>
 
+#include <wrapper/mm.h>
+
 /*
  * fault() vm_op implementation for ring buffer file mapping.
  */
@@ -113,7 +115,7 @@ static int lib_ring_buffer_mmap_buf(struct lttng_kernel_ring_buffer *buf,
                return -EINVAL;
 
        vma->vm_ops = &lib_ring_buffer_mmap_ops;
-       vma->vm_flags |= VM_DONTEXPAND;
+       wrapper_vm_flags_set(vma, VM_DONTEXPAND);
        vma->vm_private_data = buf;
 
        return 0;
This page took 0.026177 seconds and 4 git commands to generate.