OSDN Git Service

s390/mm: no need for pte_alloc_map_lock() if we know the pmd is present
authorDavid Hildenbrand <david@redhat.com>
Thu, 9 Sep 2021 16:22:46 +0000 (18:22 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 25 Oct 2021 07:20:38 +0000 (09:20 +0200)
pte_map_lock() is sufficient.

Signed-off-by: David Hildenbrand <david@redhat.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Link: https://lore.kernel.org/r/20210909162248.14969-8-david@redhat.com
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/mm/pgtable.c

index 6ad634a..e74cc59 100644 (file)
@@ -814,10 +814,7 @@ int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
        }
        spin_unlock(ptl);
 
-       ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-       if (unlikely(!ptep))
-               return -EFAULT;
-
+       ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
        new = old = pgste_get_lock(ptep);
        pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT |
                            PGSTE_ACC_BITS | PGSTE_FP_BIT);
@@ -912,10 +909,7 @@ int reset_guest_reference_bit(struct mm_struct *mm, unsigned long addr)
        }
        spin_unlock(ptl);
 
-       ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-       if (unlikely(!ptep))
-               return -EFAULT;
-
+       ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
        new = old = pgste_get_lock(ptep);
        /* Reset guest reference bit only */
        pgste_val(new) &= ~PGSTE_GR_BIT;
@@ -977,10 +971,7 @@ int get_guest_storage_key(struct mm_struct *mm, unsigned long addr,
        }
        spin_unlock(ptl);
 
-       ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
-       if (unlikely(!ptep))
-               return -EFAULT;
-
+       ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl);
        pgste = pgste_get_lock(ptep);
        *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56;
        paddr = pte_val(*ptep) & PAGE_MASK;