In later patches during exec, we would like to access default regs.kuap to
control access to the user mapping. Having thread.regs set early makes the
code changes simpler.

Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.ibm.com>
---
 arch/powerpc/kernel/process.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 9c21288f8645..78eedf0b5c30 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1461,9 +1461,18 @@ void flush_thread(void)
 #ifdef CONFIG_PPC_BOOK3S_64
 void arch_setup_new_exec(void)
 {
-       if (radix_enabled())
-               return;
-       hash__setup_new_exec();
+       if (!radix_enabled())
+               hash__setup_new_exec();
+
+       /*
+        * If we exec out of a kernel thread then thread.regs will not be
+        * set.  Do it now.
+        */
+       if (!current->thread.regs) {
+               struct pt_regs *regs = task_stack_page(current) + THREAD_SIZE;
+               current->thread.regs = regs - 1;
+       }
+
 }
 #endif
 
@@ -1709,15 +1718,6 @@ void start_thread(struct pt_regs *regs, unsigned long 
start, unsigned long sp)
 #endif
 #endif
 
-       /*
-        * If we exec out of a kernel thread then thread.regs will not be
-        * set.  Do it now.
-        */
-       if (!current->thread.regs) {
-               struct pt_regs *regs = task_stack_page(current) + THREAD_SIZE;
-               current->thread.regs = regs - 1;
-       }
-
 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
        /*
         * Clear any transactional state, we're exec()ing. The cause is
-- 
2.25.3

Reply via email to