Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'akpm' (patches from Andrew)

Merge misc fixes from Andrew Morton:
"9 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mailmap: update Mark Yao's email address
userfaultfd: clear the vma->vm_userfaultfd_ctx if UFFD_EVENT_FORK fails
mm/sparse.c: wrong allocation for mem_section
mm/zsmalloc.c: include fs.h
mm/debug.c: provide useful debugging information for VM_BUG
kernel/exit.c: export abort() to modules
mm/mprotect: add a cond_resched() inside change_pmd_range()
kernel/acct.c: fix the acct->needcheck check in check_free_space()
mm: check pfn_valid first in zero_resv_unavail

+43 -23
+1
.mailmap
··· 107 107 Maciej W. Rozycki <macro@mips.com> <macro@imgtec.com> 108 108 Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com> 109 109 Mark Brown <broonie@sirena.org.uk> 110 + Mark Yao <markyao0591@gmail.com> <mark.yao@rock-chips.com> 110 111 Martin Kepplinger <martink@posteo.de> <martin.kepplinger@theobroma-systems.com> 111 112 Martin Kepplinger <martink@posteo.de> <martin.kepplinger@ginzinger.com> 112 113 Matthieu CASTET <castet.matthieu@free.fr>
-1
arch/arm/kernel/traps.c
··· 793 793 /* if that doesn't kill us, halt */ 794 794 panic("Oops failed to kill thread"); 795 795 } 796 - EXPORT_SYMBOL(abort); 797 796 798 797 void __init trap_init(void) 799 798 {
-1
arch/m32r/kernel/traps.c
··· 122 122 /* if that doesn't kill us, halt */ 123 123 panic("Oops failed to kill thread"); 124 124 } 125 - EXPORT_SYMBOL(abort); 126 125 127 126 void __init trap_init(void) 128 127 {
-1
arch/unicore32/kernel/traps.c
··· 298 298 /* if that doesn't kill us, halt */ 299 299 panic("Oops failed to kill thread"); 300 300 } 301 - EXPORT_SYMBOL(abort); 302 301 303 302 void __init trap_init(void) 304 303 {
+18 -2
fs/userfaultfd.c
··· 570 570 static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx, 571 571 struct userfaultfd_wait_queue *ewq) 572 572 { 573 + struct userfaultfd_ctx *release_new_ctx; 574 + 573 575 if (WARN_ON_ONCE(current->flags & PF_EXITING)) 574 576 goto out; 575 577 576 578 ewq->ctx = ctx; 577 579 init_waitqueue_entry(&ewq->wq, current); 580 + release_new_ctx = NULL; 578 581 579 582 spin_lock(&ctx->event_wqh.lock); 580 583 /* ··· 604 601 new = (struct userfaultfd_ctx *) 605 602 (unsigned long) 606 603 ewq->msg.arg.reserved.reserved1; 607 - 608 - userfaultfd_ctx_put(new); 604 + release_new_ctx = new; 609 605 } 610 606 break; 611 607 } ··· 618 616 } 619 617 __set_current_state(TASK_RUNNING); 620 618 spin_unlock(&ctx->event_wqh.lock); 619 + 620 + if (release_new_ctx) { 621 + struct vm_area_struct *vma; 622 + struct mm_struct *mm = release_new_ctx->mm; 623 + 624 + /* the various vma->vm_userfaultfd_ctx still points to it */ 625 + down_write(&mm->mmap_sem); 626 + for (vma = mm->mmap; vma; vma = vma->vm_next) 627 + if (vma->vm_userfaultfd_ctx.ctx == release_new_ctx) 628 + vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; 629 + up_write(&mm->mmap_sem); 630 + 631 + userfaultfd_ctx_put(release_new_ctx); 632 + } 621 633 622 634 /* 623 635 * ctx may go away after this if the userfault pseudo fd is
+1 -1
kernel/acct.c
··· 102 102 { 103 103 struct kstatfs sbuf; 104 104 105 - if (time_is_before_jiffies(acct->needcheck)) 105 + if (time_is_after_jiffies(acct->needcheck)) 106 106 goto out; 107 107 108 108 /* May block */
+1
kernel/exit.c
··· 1763 1763 /* if that doesn't kill us, halt */ 1764 1764 panic("Oops failed to kill thread"); 1765 1765 } 1766 + EXPORT_SYMBOL(abort);
+14 -14
mm/debug.c
··· 50 50 */ 51 51 int mapcount = PageSlab(page) ? 0 : page_mapcount(page); 52 52 53 - pr_emerg("page:%p count:%d mapcount:%d mapping:%p index:%#lx", 53 + pr_emerg("page:%px count:%d mapcount:%d mapping:%px index:%#lx", 54 54 page, page_ref_count(page), mapcount, 55 55 page->mapping, page_to_pgoff(page)); 56 56 if (PageCompound(page)) ··· 69 69 70 70 #ifdef CONFIG_MEMCG 71 71 if (page->mem_cgroup) 72 - pr_alert("page->mem_cgroup:%p\n", page->mem_cgroup); 72 + pr_alert("page->mem_cgroup:%px\n", page->mem_cgroup); 73 73 #endif 74 74 } 75 75 ··· 84 84 85 85 void dump_vma(const struct vm_area_struct *vma) 86 86 { 87 - pr_emerg("vma %p start %p end %p\n" 88 - "next %p prev %p mm %p\n" 89 - "prot %lx anon_vma %p vm_ops %p\n" 90 - "pgoff %lx file %p private_data %p\n" 87 + pr_emerg("vma %px start %px end %px\n" 88 + "next %px prev %px mm %px\n" 89 + "prot %lx anon_vma %px vm_ops %px\n" 90 + "pgoff %lx file %px private_data %px\n" 91 91 "flags: %#lx(%pGv)\n", 92 92 vma, (void *)vma->vm_start, (void *)vma->vm_end, vma->vm_next, 93 93 vma->vm_prev, vma->vm_mm, ··· 100 100 101 101 void dump_mm(const struct mm_struct *mm) 102 102 { 103 - pr_emerg("mm %p mmap %p seqnum %d task_size %lu\n" 103 + pr_emerg("mm %px mmap %px seqnum %d task_size %lu\n" 104 104 #ifdef CONFIG_MMU 105 - "get_unmapped_area %p\n" 105 + "get_unmapped_area %px\n" 106 106 #endif 107 107 "mmap_base %lu mmap_legacy_base %lu highest_vm_end %lu\n" 108 - "pgd %p mm_users %d mm_count %d pgtables_bytes %lu map_count %d\n" 108 + "pgd %px mm_users %d mm_count %d pgtables_bytes %lu map_count %d\n" 109 109 "hiwater_rss %lx hiwater_vm %lx total_vm %lx locked_vm %lx\n" 110 110 "pinned_vm %lx data_vm %lx exec_vm %lx stack_vm %lx\n" 111 111 "start_code %lx end_code %lx start_data %lx end_data %lx\n" 112 112 "start_brk %lx brk %lx start_stack %lx\n" 113 113 "arg_start %lx arg_end %lx env_start %lx env_end %lx\n" 114 - "binfmt %p flags %lx core_state %p\n" 114 + "binfmt %px flags %lx core_state %px\n" 115 115 #ifdef CONFIG_AIO 116 - "ioctx_table %p\n" 116 + "ioctx_table %px\n" 117 117 #endif 118 118 #ifdef CONFIG_MEMCG 119 - "owner %p " 119 + "owner %px " 120 120 #endif 121 - "exe_file %p\n" 121 + "exe_file %px\n" 122 122 #ifdef CONFIG_MMU_NOTIFIER 123 - "mmu_notifier_mm %p\n" 123 + "mmu_notifier_mm %px\n" 124 124 #endif 125 125 #ifdef CONFIG_NUMA_BALANCING 126 126 "numa_next_scan %lu numa_scan_offset %lu numa_scan_seq %d\n"
+4 -2
mm/mprotect.c
··· 166 166 next = pmd_addr_end(addr, end); 167 167 if (!is_swap_pmd(*pmd) && !pmd_trans_huge(*pmd) && !pmd_devmap(*pmd) 168 168 && pmd_none_or_clear_bad(pmd)) 169 - continue; 169 + goto next; 170 170 171 171 /* invoke the mmu notifier if the pmd is populated */ 172 172 if (!mni_start) { ··· 188 188 } 189 189 190 190 /* huge pmd was handled */ 191 - continue; 191 + goto next; 192 192 } 193 193 } 194 194 /* fall through, the trans huge pmd just split */ ··· 196 196 this_pages = change_pte_range(vma, pmd, addr, next, newprot, 197 197 dirty_accountable, prot_numa); 198 198 pages += this_pages; 199 + next: 200 + cond_resched(); 199 201 } while (pmd++, addr = next, addr != end); 200 202 201 203 if (mni_start)
+2
mm/page_alloc.c
··· 6260 6260 pgcnt = 0; 6261 6261 for_each_resv_unavail_range(i, &start, &end) { 6262 6262 for (pfn = PFN_DOWN(start); pfn < PFN_UP(end); pfn++) { 6263 + if (!pfn_valid(ALIGN_DOWN(pfn, pageblock_nr_pages))) 6264 + continue; 6263 6265 mm_zero_struct_page(pfn_to_page(pfn)); 6264 6266 pgcnt++; 6265 6267 }
+1 -1
mm/sparse.c
··· 211 211 if (unlikely(!mem_section)) { 212 212 unsigned long size, align; 213 213 214 - size = sizeof(struct mem_section) * NR_SECTION_ROOTS; 214 + size = sizeof(struct mem_section*) * NR_SECTION_ROOTS; 215 215 align = 1 << (INTERNODE_CACHE_SHIFT); 216 216 mem_section = memblock_virt_alloc(size, align); 217 217 }
+1
mm/zsmalloc.c
··· 53 53 #include <linux/mount.h> 54 54 #include <linux/migrate.h> 55 55 #include <linux/pagemap.h> 56 + #include <linux/fs.h> 56 57 57 58 #define ZSPAGE_MAGIC 0x58 58 59