]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2017 17:20:59 +0000 (18:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2017 17:20:59 +0000 (18:20 +0100)
added patches:
arm64-initialise-high_memory-global-variable-earlier.patch

queue-4.4/arm64-initialise-high_memory-global-variable-earlier.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/arm64-initialise-high_memory-global-variable-earlier.patch b/queue-4.4/arm64-initialise-high_memory-global-variable-earlier.patch
new file mode 100644 (file)
index 0000000..e0c08e5
--- /dev/null
@@ -0,0 +1,47 @@
+From f24e5834a2c3f6c5f814a417f858226f0a010ade Mon Sep 17 00:00:00 2001
+From: Steve Capper <steve.capper@arm.com>
+Date: Mon, 4 Dec 2017 14:13:05 +0000
+Subject: arm64: Initialise high_memory global variable earlier
+
+From: Steve Capper <steve.capper@arm.com>
+
+commit f24e5834a2c3f6c5f814a417f858226f0a010ade upstream.
+
+The high_memory global variable is used by
+cma_declare_contiguous(.) before it is defined.
+
+We don't notice this as we compute __pa(high_memory - 1), and it looks
+like we're processing a VA from the direct linear map.
+
+This problem becomes apparent when we flip the kernel virtual address
+space and the linear map is moved to the bottom of the kernel VA space.
+
+This patch moves the initialisation of high_memory before it used.
+
+Fixes: f7426b983a6a ("mm: cma: adjust address limit to avoid hitting low/high memory boundary")
+Signed-off-by: Steve Capper <steve.capper@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/mm/init.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/mm/init.c
++++ b/arch/arm64/mm/init.c
+@@ -178,6 +178,7 @@ void __init arm64_memblock_init(void)
+               arm64_dma_phys_limit = max_zone_dma_phys();
+       else
+               arm64_dma_phys_limit = PHYS_MASK + 1;
++      high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
+       dma_contiguous_reserve(arm64_dma_phys_limit);
+       memblock_allow_resize();
+@@ -202,7 +203,6 @@ void __init bootmem_init(void)
+       sparse_init();
+       zone_sizes_init(min, max);
+-      high_memory = __va((max << PAGE_SHIFT) - 1) + 1;
+       max_pfn = max_low_pfn = max;
+ }
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bbe2eae8c281fe26d1707ecd5a8f0465727308a3 100644 (file)
@@ -0,0 +1 @@
+arm64-initialise-high_memory-global-variable-earlier.patch