diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/entry-common.S | 2 | ||||
-rw-r--r-- | arch/arm/kernel/signal.c | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index c71818bdf2cc..807cfebb0f44 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -44,7 +44,7 @@ fast_work_pending: | |||
44 | work_pending: | 44 | work_pending: |
45 | tst r1, #_TIF_NEED_RESCHED | 45 | tst r1, #_TIF_NEED_RESCHED |
46 | bne work_resched | 46 | bne work_resched |
47 | tst r1, #_TIF_SIGPENDING | 47 | tst r1, #_TIF_SIGPENDING|_TIF_NOTIFY_RESUME |
48 | beq no_work_pending | 48 | beq no_work_pending |
49 | mov r0, sp @ 'regs' | 49 | mov r0, sp @ 'regs' |
50 | mov r2, why @ 'syscall' | 50 | mov r2, why @ 'syscall' |
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index f7194e44d5a9..1423a3419789 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/personality.h> | 12 | #include <linux/personality.h> |
13 | #include <linux/freezer.h> | 13 | #include <linux/freezer.h> |
14 | #include <linux/uaccess.h> | 14 | #include <linux/uaccess.h> |
15 | #include <linux/tracehook.h> | ||
15 | 16 | ||
16 | #include <asm/elf.h> | 17 | #include <asm/elf.h> |
17 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
@@ -695,4 +696,11 @@ do_notify_resume(struct pt_regs *regs, unsigned int thread_flags, int syscall) | |||
695 | { | 696 | { |
696 | if (thread_flags & _TIF_SIGPENDING) | 697 | if (thread_flags & _TIF_SIGPENDING) |
697 | do_signal(regs, syscall); | 698 | do_signal(regs, syscall); |
699 | |||
700 | if (thread_flags & _TIF_NOTIFY_RESUME) { | ||
701 | clear_thread_flag(TIF_NOTIFY_RESUME); | ||
702 | tracehook_notify_resume(regs); | ||
703 | if (current->replacement_session_keyring) | ||
704 | key_replace_session_keyring(); | ||
705 | } | ||
698 | } | 706 | } |