From: kaf24@firebug.cl.cam.ac.uk Date: Thu, 29 Jun 2006 09:48:07 +0000 (+0100) Subject: Fix the kunmap_atomic() change in 10529:4260eb8c08740de0000081c61a6237ffcb95b2d5. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15912^2~44 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4a9f0032ae4dd7d46522f960e6c315955b17c6ac;p=xen.git Fix the kunmap_atomic() change in 10529:4260eb8c08740de0000081c61a6237ffcb95b2d5. Mustn't zap the PTE if the virtual address is not in kmap_atomic range! Signed-off-by: Keir Fraser --- diff --git a/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c b/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c index 566219167d..23f0e1b2e9 100644 --- a/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/highmem-xen.c @@ -60,7 +60,7 @@ void *kmap_atomic_pte(struct page *page, enum km_type type) void kunmap_atomic(void *kvaddr, enum km_type type) { -#ifdef CONFIG_DEBUG_HIGHMEM +#if defined(CONFIG_DEBUG_HIGHMEM) || defined(CONFIG_XEN) unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); @@ -69,7 +69,9 @@ void kunmap_atomic(void *kvaddr, enum km_type type) preempt_check_resched(); return; } +#endif +#if defined(CONFIG_DEBUG_HIGHMEM) if (vaddr != __fix_to_virt(FIX_KMAP_BEGIN+idx)) BUG(); @@ -86,8 +88,6 @@ void kunmap_atomic(void *kvaddr, enum km_type type) * XXX TODO: We could make this faster by only zapping when * kmap_flush_unused is called but that is trickier and more invasive. */ - unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; - enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); pte_clear(&init_mm, vaddr, kmap_pte-idx); #endif