diff options
Diffstat (limited to 'arch/m32r')
| -rw-r--r-- | arch/m32r/include/asm/thread_info.h | 2 | ||||
| -rw-r--r-- | arch/m32r/kernel/signal.c | 8 | 
2 files changed, 10 insertions, 0 deletions
diff --git a/arch/m32r/include/asm/thread_info.h b/arch/m32r/include/asm/thread_info.h index 07bb5bd00e2..71578151a40 100644 --- a/arch/m32r/include/asm/thread_info.h +++ b/arch/m32r/include/asm/thread_info.h @@ -149,6 +149,7 @@ static inline unsigned int get_thread_fault_code(void)  #define TIF_NEED_RESCHED	2	/* rescheduling necessary */  #define TIF_SINGLESTEP		3	/* restore singlestep on return to user mode */  #define TIF_IRET		4	/* return with iret */ +#define TIF_NOTIFY_RESUME	5	/* callback before returning to user */  #define TIF_RESTORE_SIGMASK	8	/* restore signal mask in do_signal() */  #define TIF_USEDFPU		16	/* FPU was used by this task this quantum (SMP) */  #define TIF_POLLING_NRFLAG	17	/* true if poll_idle() is polling TIF_NEED_RESCHED */ @@ -160,6 +161,7 @@ static inline unsigned int get_thread_fault_code(void)  #define _TIF_NEED_RESCHED	(1<<TIF_NEED_RESCHED)  #define _TIF_SINGLESTEP		(1<<TIF_SINGLESTEP)  #define _TIF_IRET		(1<<TIF_IRET) +#define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)  #define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)  #define _TIF_USEDFPU		(1<<TIF_USEDFPU)  #define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG) diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index 18124542a6e..144b0f124fc 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c @@ -21,6 +21,7 @@  #include <linux/stddef.h>  #include <linux/personality.h>  #include <linux/freezer.h> +#include <linux/tracehook.h>  #include <asm/cacheflush.h>  #include <asm/ucontext.h>  #include <asm/uaccess.h> @@ -408,5 +409,12 @@ void do_notify_resume(struct pt_regs *regs, sigset_t *oldset,  	if (thread_info_flags & _TIF_SIGPENDING)  		do_signal(regs,oldset); +	if (thread_info_flags & _TIF_NOTIFY_RESUME) { +		clear_thread_flag(TIF_NOTIFY_RESUME); +		tracehook_notify_resume(regs); +		if (current->replacement_session_keyring) +			key_replace_session_keyring(); +	} +  	clear_thread_flag(TIF_IRET);  }  |