s390/mm: remove incorrect _REGION3_ENTRY_ORIGIN define
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 22 May 2017 11:27:34 +0000 (13:27 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 12 Jun 2017 14:26:00 +0000 (16:26 +0200)
_REGION3_ENTRY_ORIGIN defines a wrong mask which can be used to
extract a segment table origin from a region 3 table entry. It removes
only the lower 11 instead of 12 bits from a region 3 table entry.
Luckily this bit is currently always zero, so nothing bad happened yet.

In order to avoid future bugs just remove the region 3 specific mask
and use the correct generic _REGION_ENTRY_ORIGIN mask.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/pgtable.h

index 3effb26..6f8a67a 100644 (file)
@@ -301,8 +301,6 @@ static inline int is_module_addr(void *addr)
 #define _REGION3_ENTRY_EMPTY   (_REGION_ENTRY_TYPE_R3 | _REGION_ENTRY_INVALID)
 
 #define _REGION3_ENTRY_ORIGIN_LARGE ~0x7fffffffUL /* large page address             */
-#define _REGION3_ENTRY_ORIGIN  ~0x7ffUL/* region third table origin         */
-
 #define _REGION3_ENTRY_DIRTY   0x2000  /* SW region dirty bit */
 #define _REGION3_ENTRY_YOUNG   0x1000  /* SW region young bit */
 #define _REGION3_ENTRY_LARGE   0x0400  /* RTTE-format control, large page  */
@@ -641,7 +639,7 @@ static inline unsigned long pud_pfn(pud_t pud)
 {
        unsigned long origin_mask;
 
-       origin_mask = _REGION3_ENTRY_ORIGIN;
+       origin_mask = _REGION_ENTRY_ORIGIN;
        if (pud_large(pud))
                origin_mask = _REGION3_ENTRY_ORIGIN_LARGE;
        return (pud_val(pud) & origin_mask) >> PAGE_SHIFT;