*  TIF_SYSCALL_TRACE - syscall trace active
   *  TIF_SYSCALL_TRACEPOINT - syscall tracepoint for ftrace
   *  TIF_SYSCALL_AUDIT - syscall auditing
 - *  TIF_SECOMP                - syscall secure computing
 + *  TIF_SECCOMP               - syscall secure computing
+  *  TIF_SYSCALL_EMU     - syscall emulation active
   *  TIF_SIGPENDING    - signal pending
   *  TIF_NEED_RESCHED  - rescheduling necessary
   *  TIF_NOTIFY_RESUME - callback before returning to user
 
        if (IS_ENABLED(CONFIG_ARM64_MODULE_PLTS))
                gfp_mask |= __GFP_NOWARN;
  
 +      if (IS_ENABLED(CONFIG_KASAN))
 +              /* don't exceed the static module region - see below */
 +              module_alloc_end = MODULES_END;
 +
        p = __vmalloc_node_range(size, MODULE_ALIGN, module_alloc_base,
-                               module_alloc_end, gfp_mask, PAGE_KERNEL_EXEC, 0,
 -                              module_alloc_base + MODULES_VSIZE,
 -                              gfp_mask, PAGE_KERNEL, 0,
++                              module_alloc_end, gfp_mask, PAGE_KERNEL, 0,
                                NUMA_NO_NODE, __builtin_return_address(0));
  
        if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) &&
 
  /* Handle removing and resetting vm mappings related to the vm_struct. */
  static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages)
  {
 -      unsigned long addr = (unsigned long)area->addr;
        unsigned long start = ULONG_MAX, end = 0;
        int flush_reset = area->flags & VM_FLUSH_RESET_PERMS;
 +      int flush_dmap = 0;
        int i;
  
-       /*
-        * The below block can be removed when all architectures that have
-        * direct map permissions also have set_direct_map_() implementations.
-        * This is concerned with resetting the direct map any an vm alias with
-        * execute permissions, without leaving a RW+X window.
-        */
-       if (flush_reset && !IS_ENABLED(CONFIG_ARCH_HAS_SET_DIRECT_MAP)) {
-               set_memory_nx((unsigned long)area->addr, area->nr_pages);
-               set_memory_rw((unsigned long)area->addr, area->nr_pages);
-       }
- 
        remove_vm_area(area->addr);
  
        /* If this is not VM_FLUSH_RESET_PERMS memory, no need for the below. */