From e556a7c1c6c1aee42831a98bb4351609ee51258b Mon Sep 17 00:00:00 2001 From: Thomas Vegas Date: Thu, 6 Jul 2023 12:36:58 +0300 Subject: [PATCH] KERNEL: Support vma constified vm_flags --- kernel/xpmem_attach.c | 6 +++--- kernel/xpmem_private.h | 7 +++++++ m4/ac_path_kernel_source.m4 | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/xpmem_attach.c b/kernel/xpmem_attach.c index cc09071..d2d3ecd 100644 --- a/kernel/xpmem_attach.c +++ b/kernel/xpmem_attach.c @@ -582,12 +582,12 @@ xpmem_attach(struct file *file, xpmem_apid_t apid, off_t offset, size_t size, xpmem_mmap_write_lock(current->mm); vma = find_vma(current->mm, at_vaddr); - xpmem_mmap_write_unlock(current->mm); vma->vm_private_data = att; - vma->vm_flags |= - VM_DONTCOPY | VM_DONTDUMP | VM_IO | VM_DONTEXPAND | VM_PFNMAP; + vm_flags_set(vma, + VM_DONTCOPY | VM_DONTDUMP | VM_IO | VM_DONTEXPAND | VM_PFNMAP); vma->vm_ops = &xpmem_vm_ops; + xpmem_mmap_write_unlock(current->mm); att->at_vma = vma; diff --git a/kernel/xpmem_private.h b/kernel/xpmem_private.h index ed9001a..0ccf00f 100644 --- a/kernel/xpmem_private.h +++ b/kernel/xpmem_private.h @@ -384,6 +384,13 @@ struct vma_iterator { (_vma) = (_vma)->vm_next) #endif +#if (!HAVE_DECL_VM_FLAGS_SET) +static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags) +{ + vma->vm_flags |= flags; +} +#endif + extern struct xpmem_thread_group *xpmem_tg_ref_by_segid(xpmem_segid_t); extern struct xpmem_thread_group *xpmem_tg_ref_by_apid(xpmem_apid_t); extern void xpmem_tg_deref(struct xpmem_thread_group *); diff --git a/m4/ac_path_kernel_source.m4 b/m4/ac_path_kernel_source.m4 index e3af748..08aec40 100644 --- a/m4/ac_path_kernel_source.m4 +++ b/m4/ac_path_kernel_source.m4 @@ -135,6 +135,8 @@ AC_DEFUN([AC_KERNEL_CHECKS], AC_DEFINE([HAVE_LATEST_APPLY_TO_PAGE_RANGE], 1, [Have latest page iterator]) ], []) + AC_CHECK_DECLS([vm_flags_set], [], [], [[#include ]]) + CPPFLAGS="$save_CPPFLAGS" ] )