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 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
xen: make sure stray alias mappings are gone before pinning
vmap: cope with vm_unmap_aliases before vmalloc_init()

+16 -5
+3 -2
arch/x86/xen/enlighten.c
··· 863 863 if (PagePinned(virt_to_page(mm->pgd))) { 864 864 SetPagePinned(page); 865 865 866 + vm_unmap_aliases(); 866 867 if (!PageHighMem(page)) { 867 868 make_lowmem_page_readonly(__va(PFN_PHYS((unsigned long)pfn))); 868 869 if (level == PT_PTE && USE_SPLIT_PTLOCKS) 869 870 pin_pagetable_pfn(MMUEXT_PIN_L1_TABLE, pfn); 870 - } else 871 + } else { 871 872 /* make sure there are no stray mappings of 872 873 this page */ 873 874 kmap_flush_unused(); 874 - vm_unmap_aliases(); 875 + } 875 876 } 876 877 } 877 878
+6 -3
arch/x86/xen/mmu.c
··· 850 850 read-only, and can be pinned. */ 851 851 static void __xen_pgd_pin(struct mm_struct *mm, pgd_t *pgd) 852 852 { 853 + vm_unmap_aliases(); 854 + 853 855 xen_mc_batch(); 854 856 855 - if (xen_pgd_walk(mm, xen_pin_page, USER_LIMIT)) { 856 - /* re-enable interrupts for kmap_flush_unused */ 857 + if (xen_pgd_walk(mm, xen_pin_page, USER_LIMIT)) { 858 + /* re-enable interrupts for flushing */ 857 859 xen_mc_issue(0); 860 + 858 861 kmap_flush_unused(); 859 - vm_unmap_aliases(); 862 + 860 863 xen_mc_batch(); 861 864 } 862 865
+7
mm/vmalloc.c
··· 592 592 593 593 #define VMAP_BLOCK_SIZE (VMAP_BBMAP_BITS * PAGE_SIZE) 594 594 595 + static bool vmap_initialized __read_mostly = false; 596 + 595 597 struct vmap_block_queue { 596 598 spinlock_t lock; 597 599 struct list_head free; ··· 830 828 int cpu; 831 829 int flush = 0; 832 830 831 + if (unlikely(!vmap_initialized)) 832 + return; 833 + 833 834 for_each_possible_cpu(cpu) { 834 835 struct vmap_block_queue *vbq = &per_cpu(vmap_block_queue, cpu); 835 836 struct vmap_block *vb; ··· 947 942 INIT_LIST_HEAD(&vbq->dirty); 948 943 vbq->nr_dirty = 0; 949 944 } 945 + 946 + vmap_initialized = true; 950 947 } 951 948 952 949 void unmap_kernel_range(unsigned long addr, unsigned long size)