]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
Fix ptep_get_and_clear(): atomic operation required on user ptes to
authorKeir Fraser <keir@xensource.com>
Fri, 19 Oct 2007 08:21:05 +0000 (09:21 +0100)
committerKeir Fraser <keir@xensource.com>
Fri, 19 Oct 2007 08:21:05 +0000 (09:21 +0100)
get correct snapshot of A/D bits.

Error pointed out by Jan Beulich.

Signed-off-by: Keir Fraser <keir@xensource.com>
include/asm-i386/mach-xen/asm/pgtable-2level.h
include/asm-i386/mach-xen/asm/pgtable-3level.h
include/asm-x86_64/mach-xen/asm/pgtable.h

index db476a00a58ecb41fd69d91a5bc7e76ef98fc8fb..f16c37f9198be337424baf26932d9d6ec0d95295 100644 (file)
@@ -44,7 +44,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 {
        pte_t pte = *ptep;
        if (!pte_none(pte)) {
-               if ((mm != current->mm && mm != &init_mm) ||
+               if ((mm != &init_mm) ||
                    HYPERVISOR_update_va_mapping(addr, __pte(0), 0))
                        pte = __pte_ma(xchg(&ptep->pte_low, 0));
        }
index 8cb5f039579a53bb42c488e8da428c4859fb97de..01e897b5255fe3603362f966bf46c9c54f6de66d 100644 (file)
@@ -128,7 +128,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 {
        pte_t pte = *ptep;
        if (!pte_none(pte)) {
-               if ((mm != current->mm && mm != &init_mm) ||
+               if ((mm != &init_mm) ||
                    HYPERVISOR_update_va_mapping(addr, __pte(0), 0)) {
                        uint64_t val = __pte_val(pte);
                        if (__cmpxchg64(ptep, val, 0) != val) {
index 0bb1ccbaf69e3218d41178e2dc16f1f3d6db09f9..6ab63dbcbb710f4c4b71ceb430f43900265e8066 100644 (file)
@@ -285,7 +285,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 {
        pte_t pte = *ptep;
        if (!pte_none(pte)) {
-               if ((mm != current->mm && mm != &init_mm) ||
+               if ((mm != &init_mm) ||
                    HYPERVISOR_update_va_mapping(addr, __pte(0), 0))
                        pte = __pte_ma(xchg(&ptep->pte, 0));
        }