mm: vmalloc: pass additional vm_flags to __vmalloc_node_range()
[cascardo/linux.git] / mm / vmalloc.c
index 2e74e99..35b25e1 100644 (file)
@@ -1619,6 +1619,7 @@ fail:
  *     @end:           vm area range end
  *     @gfp_mask:      flags for the page level allocator
  *     @prot:          protection mask for the allocated pages
+ *     @vm_flags:      additional vm area flags (e.g. %VM_NO_GUARD)
  *     @node:          node to use for allocation or NUMA_NO_NODE
  *     @caller:        caller's return address
  *
@@ -1628,7 +1629,8 @@ fail:
  */
 void *__vmalloc_node_range(unsigned long size, unsigned long align,
                        unsigned long start, unsigned long end, gfp_t gfp_mask,
-                       pgprot_t prot, int node, const void *caller)
+                       pgprot_t prot, unsigned long vm_flags, int node,
+                       const void *caller)
 {
        struct vm_struct *area;
        void *addr;
@@ -1638,8 +1640,8 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
        if (!size || (size >> PAGE_SHIFT) > totalram_pages)
                goto fail;
 
-       area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED,
-                                 start, end, node, gfp_mask, caller);
+       area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED |
+                               vm_flags, start, end, node, gfp_mask, caller);
        if (!area)
                goto fail;
 
@@ -1688,7 +1690,7 @@ static void *__vmalloc_node(unsigned long size, unsigned long align,
                            int node, const void *caller)
 {
        return __vmalloc_node_range(size, align, VMALLOC_START, VMALLOC_END,
-                               gfp_mask, prot, node, caller);
+                               gfp_mask, prot, 0, node, caller);
 }
 
 void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)