28 lines
923 B
Diff
28 lines
923 B
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Fri, 16 Sep 2016 16:32:23 +0100
|
|
Subject: arm64/mm: Limit TASK_SIZE_64 for compatibility
|
|
|
|
Some programs assume they can use 17 tag bits in a 64-bit pointer,
|
|
which works on most other 64-bit architectures but not on arm64 with
|
|
CONFIG_ARM64_VA_BITS_48. To maintain compatibility with these
|
|
programs, limit TASK_SIZE_64 to a maximum of 1 << 47.
|
|
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
|
|
--- a/arch/arm64/include/asm/memory.h
|
|
+++ b/arch/arm64/include/asm/memory.h
|
|
@@ -74,7 +74,12 @@
|
|
#define PCI_IO_END (VMEMMAP_START - SZ_2M)
|
|
#define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
|
|
#define FIXADDR_TOP (PCI_IO_START - SZ_2M)
|
|
+#if VA_BITS <= 47
|
|
#define TASK_SIZE_64 (UL(1) << VA_BITS)
|
|
+#else
|
|
+/* User-space might use up to 17 tag bits in 64-bit pointers */
|
|
+#define TASK_SIZE_64 (UL(1) << 47)
|
|
+#endif
|
|
|
|
#ifdef CONFIG_COMPAT
|
|
#define TASK_SIZE_32 UL(0x100000000)
|