diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-02-09 18:24:31 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-02-09 18:24:38 +0100 |
commit | 522d8dc08b16deb51c128d544ab1cb9c621c950e (patch) | |
tree | 8754b17e8d6583ef27d1fe016c96b3bded0f62fa | |
parent | b90b34c6802865d07f482650eff82a4b38df6d79 (diff) | |
download | op-kernel-dev-522d8dc08b16deb51c128d544ab1cb9c621c950e.zip op-kernel-dev-522d8dc08b16deb51c128d544ab1cb9c621c950e.tar.gz |
[S390] VMEM_MAX_PHYS overflow on 31 bit.
With the new space saving spinlock_t and a non-debug configuration
the struct page only has 32 bytes for 31 bit s390. The causes an
overflow in the calculation of VMEM_MAX_PHYS which renders the
kernel unbootable.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | include/asm-s390/pgtable.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index 3f52075..65d3338 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h @@ -127,8 +127,9 @@ extern char empty_zero_page[PAGE_SIZE]; * mapping. This needs to be calculated at compile time since the size of the * VMEM_MAP is static but the size of struct page can change. */ -#define VMEM_MAX_PHYS min(VMALLOC_START, ((VMEM_MAP_END - VMALLOC_END) / \ - sizeof(struct page) * PAGE_SIZE) & ~((16 << 20) - 1)) +#define VMEM_MAX_PAGES ((VMEM_MAP_END - VMALLOC_END) / sizeof(struct page)) +#define VMEM_MAX_PFN min(VMALLOC_START >> PAGE_SHIFT, VMEM_MAX_PAGES) +#define VMEM_MAX_PHYS ((VMEM_MAX_PFN << PAGE_SHIFT) & ~((16 << 20) - 1)) #define VMEM_MAP ((struct page *) VMALLOC_END) /* |