aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Berger <[email protected]>2019-07-01 18:50:11 +0100
committerRussell King <[email protected]>2019-08-23 11:32:36 +0100
commitc51bc12d06b3a5494fbfcbd788a8e307932a06e9 (patch)
tree1be152722286130b0930674e5110f9492d088b6b
parentd1abaeb3be7b5fa6d7a1fbbd2e14e3310005c4c1 (diff)
ARM: 8874/1: mm: only adjust sections of valid mm structures
A timing hazard exists when an early fork/exec thread begins exiting and sets its mm pointer to NULL while a separate core tries to update the section information. This commit ensures that the mm pointer is not NULL before setting its section parameters. The arguments provided by commit 11ce4b33aedc ("ARM: 8672/1: mm: remove tasklist locking from update_sections_early()") are equally valid for not requiring grabbing the task_lock around this check. Fixes: 08925c2f124f ("ARM: 8464/1: Update all mm structures with section adjustments") Signed-off-by: Doug Berger <[email protected]> Acked-by: Laura Abbott <[email protected]> Cc: Mike Rapoport <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Florian Fainelli <[email protected]> Cc: Rob Herring <[email protected]> Cc: "Steven Rostedt (VMware)" <[email protected]> Cc: Peng Fan <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Signed-off-by: Russell King <[email protected]>
-rw-r--r--arch/arm/mm/init.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 16d373d587c4..3a65ded832df 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -628,7 +628,8 @@ static void update_sections_early(struct section_perm perms[], int n)
if (t->flags & PF_KTHREAD)
continue;
for_each_thread(t, s)
- set_section_perms(perms, n, true, s->mm);
+ if (s->mm)
+ set_section_perms(perms, n, true, s->mm);
}
set_section_perms(perms, n, true, current->active_mm);
set_section_perms(perms, n, true, &init_mm);