aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/tile/kernel/process.c')
-rw-r--r--arch/tile/kernel/process.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
index 48e5773dd0b7..b403c2e3e263 100644
--- a/arch/tile/kernel/process.c
+++ b/arch/tile/kernel/process.c
@@ -27,6 +27,7 @@
27#include <linux/kernel.h> 27#include <linux/kernel.h>
28#include <linux/tracehook.h> 28#include <linux/tracehook.h>
29#include <linux/signal.h> 29#include <linux/signal.h>
30#include <linux/context_tracking.h>
30#include <asm/stack.h> 31#include <asm/stack.h>
31#include <asm/switch_to.h> 32#include <asm/switch_to.h>
32#include <asm/homecache.h> 33#include <asm/homecache.h>
@@ -474,6 +475,8 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags)
474 if (!user_mode(regs)) 475 if (!user_mode(regs))
475 return 0; 476 return 0;
476 477
478 user_exit();
479
477 /* Enable interrupts; they are disabled again on return to caller. */ 480 /* Enable interrupts; they are disabled again on return to caller. */
478 local_irq_enable(); 481 local_irq_enable();
479 482
@@ -496,11 +499,12 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags)
496 tracehook_notify_resume(regs); 499 tracehook_notify_resume(regs);
497 return 1; 500 return 1;
498 } 501 }
499 if (thread_info_flags & _TIF_SINGLESTEP) { 502 if (thread_info_flags & _TIF_SINGLESTEP)
500 single_step_once(regs); 503 single_step_once(regs);
501 return 0; 504
502 } 505 user_enter();
503 panic("work_pending: bad flags %#x\n", thread_info_flags); 506
507 return 0;
504} 508}
505 509
506unsigned long get_wchan(struct task_struct *p) 510unsigned long get_wchan(struct task_struct *p)