diff options
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/hugetlb.c | 2 | ||||
| -rw-r--r-- | mm/memblock.c | 6 | ||||
| -rw-r--r-- | mm/mmap.c | 2 | ||||
| -rw-r--r-- | mm/percpu-vm.c | 3 |
4 files changed, 7 insertions, 6 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 5f34bd8dda34..a876871f6be5 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
| @@ -2277,8 +2277,8 @@ void __unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, | |||
| 2277 | set_page_dirty(page); | 2277 | set_page_dirty(page); |
| 2278 | list_add(&page->lru, &page_list); | 2278 | list_add(&page->lru, &page_list); |
| 2279 | } | 2279 | } |
| 2280 | spin_unlock(&mm->page_table_lock); | ||
| 2281 | flush_tlb_range(vma, start, end); | 2280 | flush_tlb_range(vma, start, end); |
| 2281 | spin_unlock(&mm->page_table_lock); | ||
| 2282 | mmu_notifier_invalidate_range_end(mm, start, end); | 2282 | mmu_notifier_invalidate_range_end(mm, start, end); |
| 2283 | list_for_each_entry_safe(page, tmp, &page_list, lru) { | 2283 | list_for_each_entry_safe(page, tmp, &page_list, lru) { |
| 2284 | page_remove_rmap(page); | 2284 | page_remove_rmap(page); |
diff --git a/mm/memblock.c b/mm/memblock.c index 77b5f227e1d8..99f285599501 100644 --- a/mm/memblock.c +++ b/mm/memblock.c | |||
| @@ -99,9 +99,6 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start, | |||
| 99 | phys_addr_t this_start, this_end, cand; | 99 | phys_addr_t this_start, this_end, cand; |
| 100 | u64 i; | 100 | u64 i; |
| 101 | 101 | ||
| 102 | /* align @size to avoid excessive fragmentation on reserved array */ | ||
| 103 | size = round_up(size, align); | ||
| 104 | |||
| 105 | /* pump up @end */ | 102 | /* pump up @end */ |
| 106 | if (end == MEMBLOCK_ALLOC_ACCESSIBLE) | 103 | if (end == MEMBLOCK_ALLOC_ACCESSIBLE) |
| 107 | end = memblock.current_limit; | 104 | end = memblock.current_limit; |
| @@ -731,6 +728,9 @@ static phys_addr_t __init memblock_alloc_base_nid(phys_addr_t size, | |||
| 731 | { | 728 | { |
| 732 | phys_addr_t found; | 729 | phys_addr_t found; |
| 733 | 730 | ||
| 731 | /* align @size to avoid excessive fragmentation on reserved array */ | ||
| 732 | size = round_up(size, align); | ||
| 733 | |||
| 734 | found = memblock_find_in_range_node(0, max_addr, size, align, nid); | 734 | found = memblock_find_in_range_node(0, max_addr, size, align, nid); |
| 735 | if (found && !memblock_reserve(found, size)) | 735 | if (found && !memblock_reserve(found, size)) |
| 736 | return found; | 736 | return found; |
| @@ -1293,6 +1293,8 @@ munmap_back: | |||
| 1293 | pgoff = vma->vm_pgoff; | 1293 | pgoff = vma->vm_pgoff; |
| 1294 | vm_flags = vma->vm_flags; | 1294 | vm_flags = vma->vm_flags; |
| 1295 | } else if (vm_flags & VM_SHARED) { | 1295 | } else if (vm_flags & VM_SHARED) { |
| 1296 | if (unlikely(vm_flags & (VM_GROWSDOWN|VM_GROWSUP))) | ||
| 1297 | goto free_vma; | ||
| 1296 | error = shmem_zero_setup(vma); | 1298 | error = shmem_zero_setup(vma); |
| 1297 | if (error) | 1299 | if (error) |
| 1298 | goto free_vma; | 1300 | goto free_vma; |
diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index 12a48a88c0d8..405d331804c3 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c | |||
| @@ -184,8 +184,7 @@ static void pcpu_unmap_pages(struct pcpu_chunk *chunk, | |||
| 184 | page_end - page_start); | 184 | page_end - page_start); |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | for (i = page_start; i < page_end; i++) | 187 | bitmap_clear(populated, page_start, page_end - page_start); |
| 188 | __clear_bit(i, populated); | ||
| 189 | } | 188 | } |
| 190 | 189 | ||
| 191 | /** | 190 | /** |
