Thread (22 messages) 22 messages, 6 authors, 2016-08-12

[PATCH 2/2] arm: apply more __ro_after_init

From: arnd@arndb.de (Arnd Bergmann)
Date: 2016-08-10 19:31:55
Also in: linux-arch, lkml

On Wednesday, August 10, 2016 11:12:53 AM CEST Russell King - ARM Linux wrote:
On Wed, Aug 10, 2016 at 12:00:53PM +0200, Arnd Bergmann wrote:
quoted
On Wednesday, August 10, 2016 10:43:39 AM CEST Russell King - ARM Linux wrote:
quoted
On Fri, Jun 03, 2016 at 11:40:24AM -0700, Kees Cook wrote:
quoted
@@ -1309,16 +1309,11 @@ void __init arm_mm_memblock_reserve(void)
  * Any other function or debugging method which may touch any device _will_
  * crash the kernel.
  */
+static char vectors[PAGE_SIZE * 2] __ro_after_init __aligned(PAGE_SIZE);
 static void __init devicemaps_init(const struct machine_desc *mdesc)
 {
      struct map_desc map;
      unsigned long addr;
-     void *vectors;
-
-     /*
-      * Allocate the vector page early.
-      */
-     vectors = early_alloc(PAGE_SIZE * 2);
This one is not appropriate.  We _do_ write to these pages after init
for FIQ handler updates.  See set_fiq_handler().
Is that the only thing that modifies the page? If we think this is a
valuable change, we could make it depend on the absence of FIQ
support, as very few platforms (rpc, omap1, s3c24xx and possibly
imx) seem to even use it.
There's the TLS emulation too, but that writes via the vectors mapping
at 0xffff0ff0.
Ok, so that should be safe. Can we change the fiq code to also use the
high mapping and then take the __ro_after_init patch on top?

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help