Merge tag 'v4.6-rc3' into drm-intel-next-queued
Linux 4.6-rc3
Backmerge requested by Chris Wilson to make his patches apply cleanly.
Tiny conflict in vmalloc.c with the (properly acked and all) patch in
drm-intel-next:
commit 4da56b99d9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon Apr 4 14:46:42 2016 +0100
mm/vmap: Add a notifier for when we run out of vmap address space
and Linus' tree.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
31
mm/vmalloc.c
31
mm/vmalloc.c
@@ -484,8 +484,8 @@ overflow:
|
||||
}
|
||||
|
||||
if (printk_ratelimit())
|
||||
pr_warn("vmap allocation for size %lu failed: "
|
||||
"use vmalloc=<size> to increase size.\n", size);
|
||||
pr_warn("vmap allocation for size %lu failed: use vmalloc=<size> to increase size\n",
|
||||
size);
|
||||
kfree(va);
|
||||
return ERR_PTR(-EBUSY);
|
||||
}
|
||||
@@ -558,22 +558,21 @@ static void unmap_vmap_area(struct vmap_area *va)
|
||||
static void vmap_debug_free_range(unsigned long start, unsigned long end)
|
||||
{
|
||||
/*
|
||||
* Unmap page tables and force a TLB flush immediately if
|
||||
* CONFIG_DEBUG_PAGEALLOC is set. This catches use after free
|
||||
* bugs similarly to those in linear kernel virtual address
|
||||
* space after a page has been freed.
|
||||
* Unmap page tables and force a TLB flush immediately if pagealloc
|
||||
* debugging is enabled. This catches use after free bugs similarly to
|
||||
* those in linear kernel virtual address space after a page has been
|
||||
* freed.
|
||||
*
|
||||
* All the lazy freeing logic is still retained, in order to
|
||||
* minimise intrusiveness of this debugging feature.
|
||||
* All the lazy freeing logic is still retained, in order to minimise
|
||||
* intrusiveness of this debugging feature.
|
||||
*
|
||||
* This is going to be *slow* (linear kernel virtual address
|
||||
* debugging doesn't do a broadcast TLB flush so it is a lot
|
||||
* faster).
|
||||
* This is going to be *slow* (linear kernel virtual address debugging
|
||||
* doesn't do a broadcast TLB flush so it is a lot faster).
|
||||
*/
|
||||
#ifdef CONFIG_DEBUG_PAGEALLOC
|
||||
vunmap_page_range(start, end);
|
||||
flush_tlb_kernel_range(start, end);
|
||||
#endif
|
||||
if (debug_pagealloc_enabled()) {
|
||||
vunmap_page_range(start, end);
|
||||
flush_tlb_kernel_range(start, end);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1113,7 +1112,7 @@ void vm_unmap_ram(const void *mem, unsigned int count)
|
||||
BUG_ON(!addr);
|
||||
BUG_ON(addr < VMALLOC_START);
|
||||
BUG_ON(addr > VMALLOC_END);
|
||||
BUG_ON(!IS_ALIGNED(addr, PAGE_SIZE));
|
||||
BUG_ON(!PAGE_ALIGNED(addr));
|
||||
|
||||
debug_check_no_locks_freed(mem, size);
|
||||
vmap_debug_free_range(addr, addr+size);
|
||||
|
Reference in New Issue
Block a user