aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/process.c')
-rw-r--r--arch/parisc/kernel/process.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index 2c05a9292a81..cbc37216bf90 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -48,6 +48,7 @@
48#include <linux/unistd.h> 48#include <linux/unistd.h>
49#include <linux/kallsyms.h> 49#include <linux/kallsyms.h>
50#include <linux/uaccess.h> 50#include <linux/uaccess.h>
51#include <linux/rcupdate.h>
51 52
52#include <asm/io.h> 53#include <asm/io.h>
53#include <asm/asm-offsets.h> 54#include <asm/asm-offsets.h>
@@ -69,8 +70,10 @@ void cpu_idle(void)
69 70
70 /* endless idle loop with no priority at all */ 71 /* endless idle loop with no priority at all */
71 while (1) { 72 while (1) {
73 rcu_idle_enter();
72 while (!need_resched()) 74 while (!need_resched())
73 barrier(); 75 barrier();
76 rcu_idle_exit();
74 schedule_preempt_disabled(); 77 schedule_preempt_disabled();
75 check_pgt_cache(); 78 check_pgt_cache();
76 } 79 }
@@ -339,13 +342,13 @@ unsigned long thread_saved_pc(struct task_struct *t)
339asmlinkage int sys_execve(struct pt_regs *regs) 342asmlinkage int sys_execve(struct pt_regs *regs)
340{ 343{
341 int error; 344 int error;
342 char *filename; 345 struct filename *filename;
343 346
344 filename = getname((const char __user *) regs->gr[26]); 347 filename = getname((const char __user *) regs->gr[26]);
345 error = PTR_ERR(filename); 348 error = PTR_ERR(filename);
346 if (IS_ERR(filename)) 349 if (IS_ERR(filename))
347 goto out; 350 goto out;
348 error = do_execve(filename, 351 error = do_execve(filename->name,
349 (const char __user *const __user *) regs->gr[25], 352 (const char __user *const __user *) regs->gr[25],
350 (const char __user *const __user *) regs->gr[24], 353 (const char __user *const __user *) regs->gr[24],
351 regs); 354 regs);