diff options
| -rw-r--r-- | arch/m68k/include/asm/thread_info.h | 1 | ||||
| -rw-r--r-- | arch/m68k/kernel/entry_mm.S | 6 | ||||
| -rw-r--r-- | arch/m68k/kernel/signal.c | 15 | ||||
| -rw-r--r-- | arch/m68k/platform/68328/entry.S | 2 | ||||
| -rw-r--r-- | arch/m68k/platform/68360/entry.S | 2 | ||||
| -rw-r--r-- | arch/m68k/platform/coldfire/entry.S | 2 |
6 files changed, 21 insertions, 7 deletions
diff --git a/arch/m68k/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info.h index e8665e6f9464..126131f94a2c 100644 --- a/arch/m68k/include/asm/thread_info.h +++ b/arch/m68k/include/asm/thread_info.h | |||
| @@ -71,6 +71,7 @@ static inline struct thread_info *current_thread_info(void) | |||
| 71 | * bits 0-7 are tested at every exception exit | 71 | * bits 0-7 are tested at every exception exit |
| 72 | * bits 8-15 are also tested at syscall exit | 72 | * bits 8-15 are also tested at syscall exit |
| 73 | */ | 73 | */ |
| 74 | #define TIF_NOTIFY_RESUME 5 /* callback before returning to user */ | ||
| 74 | #define TIF_SIGPENDING 6 /* signal pending */ | 75 | #define TIF_SIGPENDING 6 /* signal pending */ |
| 75 | #define TIF_NEED_RESCHED 7 /* rescheduling necessary */ | 76 | #define TIF_NEED_RESCHED 7 /* rescheduling necessary */ |
| 76 | #define TIF_DELAYED_TRACE 14 /* single step a syscall */ | 77 | #define TIF_DELAYED_TRACE 14 /* single step a syscall */ |
diff --git a/arch/m68k/kernel/entry_mm.S b/arch/m68k/kernel/entry_mm.S index 675a854966a6..f29e73ca9dbb 100644 --- a/arch/m68k/kernel/entry_mm.S +++ b/arch/m68k/kernel/entry_mm.S | |||
| @@ -148,7 +148,7 @@ syscall_exit_work: | |||
| 148 | jcs do_trace_exit | 148 | jcs do_trace_exit |
| 149 | jmi do_delayed_trace | 149 | jmi do_delayed_trace |
| 150 | lslw #8,%d0 | 150 | lslw #8,%d0 |
| 151 | jmi do_signal_return | 151 | jne do_signal_return |
| 152 | pea resume_userspace | 152 | pea resume_userspace |
| 153 | jra schedule | 153 | jra schedule |
| 154 | 154 | ||
| @@ -172,7 +172,7 @@ exit_work: | |||
| 172 | | save top of frame | 172 | | save top of frame |
| 173 | movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0) | 173 | movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0) |
| 174 | lslb #1,%d0 | 174 | lslb #1,%d0 |
| 175 | jmi do_signal_return | 175 | jne do_signal_return |
| 176 | pea resume_userspace | 176 | pea resume_userspace |
| 177 | jra schedule | 177 | jra schedule |
| 178 | 178 | ||
| @@ -182,7 +182,7 @@ do_signal_return: | |||
| 182 | subql #4,%sp | dummy return address | 182 | subql #4,%sp | dummy return address |
| 183 | SAVE_SWITCH_STACK | 183 | SAVE_SWITCH_STACK |
| 184 | pea %sp@(SWITCH_STACK_SIZE) | 184 | pea %sp@(SWITCH_STACK_SIZE) |
| 185 | bsrl do_signal | 185 | bsrl do_notify_resume |
| 186 | addql #4,%sp | 186 | addql #4,%sp |
| 187 | RESTORE_SWITCH_STACK | 187 | RESTORE_SWITCH_STACK |
| 188 | addql #4,%sp | 188 | addql #4,%sp |
diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c index d8f6960e8fd9..d9f3d1900eed 100644 --- a/arch/m68k/kernel/signal.c +++ b/arch/m68k/kernel/signal.c | |||
| @@ -43,6 +43,7 @@ | |||
| 43 | #include <linux/tty.h> | 43 | #include <linux/tty.h> |
| 44 | #include <linux/binfmts.h> | 44 | #include <linux/binfmts.h> |
| 45 | #include <linux/module.h> | 45 | #include <linux/module.h> |
| 46 | #include <linux/tracehook.h> | ||
| 46 | 47 | ||
| 47 | #include <asm/setup.h> | 48 | #include <asm/setup.h> |
| 48 | #include <asm/uaccess.h> | 49 | #include <asm/uaccess.h> |
| @@ -1154,7 +1155,7 @@ handle_signal(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
| 1154 | * want to handle. Thus you cannot kill init even with a SIGKILL even by | 1155 | * want to handle. Thus you cannot kill init even with a SIGKILL even by |
| 1155 | * mistake. | 1156 | * mistake. |
| 1156 | */ | 1157 | */ |
| 1157 | asmlinkage void do_signal(struct pt_regs *regs) | 1158 | static void do_signal(struct pt_regs *regs) |
| 1158 | { | 1159 | { |
| 1159 | siginfo_t info; | 1160 | siginfo_t info; |
| 1160 | struct k_sigaction ka; | 1161 | struct k_sigaction ka; |
| @@ -1186,3 +1187,15 @@ asmlinkage void do_signal(struct pt_regs *regs) | |||
| 1186 | sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); | 1187 | sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); |
| 1187 | } | 1188 | } |
| 1188 | } | 1189 | } |
| 1190 | |||
| 1191 | void do_notify_resume(struct pt_regs *regs) | ||
| 1192 | { | ||
| 1193 | if (test_thread_flag(TIF_SIGPENDING)) | ||
| 1194 | do_signal(regs); | ||
| 1195 | |||
| 1196 | if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) { | ||
| 1197 | tracehook_notify_resume(regs); | ||
| 1198 | if (current->replacement_session_keyring) | ||
| 1199 | key_replace_session_keyring(); | ||
| 1200 | } | ||
| 1201 | } | ||
diff --git a/arch/m68k/platform/68328/entry.S b/arch/m68k/platform/68328/entry.S index 5c39b80ed7de..7f91c2fde509 100644 --- a/arch/m68k/platform/68328/entry.S +++ b/arch/m68k/platform/68328/entry.S | |||
| @@ -119,7 +119,7 @@ Lsignal_return: | |||
| 119 | subql #4,%sp /* dummy return address*/ | 119 | subql #4,%sp /* dummy return address*/ |
| 120 | SAVE_SWITCH_STACK | 120 | SAVE_SWITCH_STACK |
| 121 | pea %sp@(SWITCH_STACK_SIZE) | 121 | pea %sp@(SWITCH_STACK_SIZE) |
| 122 | bsrw do_signal | 122 | bsrw do_notify_resume |
| 123 | addql #4,%sp | 123 | addql #4,%sp |
| 124 | RESTORE_SWITCH_STACK | 124 | RESTORE_SWITCH_STACK |
| 125 | addql #4,%sp | 125 | addql #4,%sp |
diff --git a/arch/m68k/platform/68360/entry.S b/arch/m68k/platform/68360/entry.S index aa47d1d49929..904fd9a4af4e 100644 --- a/arch/m68k/platform/68360/entry.S +++ b/arch/m68k/platform/68360/entry.S | |||
| @@ -115,7 +115,7 @@ Lsignal_return: | |||
| 115 | subql #4,%sp /* dummy return address*/ | 115 | subql #4,%sp /* dummy return address*/ |
| 116 | SAVE_SWITCH_STACK | 116 | SAVE_SWITCH_STACK |
| 117 | pea %sp@(SWITCH_STACK_SIZE) | 117 | pea %sp@(SWITCH_STACK_SIZE) |
| 118 | bsrw do_signal | 118 | bsrw do_notify_resume |
| 119 | addql #4,%sp | 119 | addql #4,%sp |
| 120 | RESTORE_SWITCH_STACK | 120 | RESTORE_SWITCH_STACK |
| 121 | addql #4,%sp | 121 | addql #4,%sp |
diff --git a/arch/m68k/platform/coldfire/entry.S b/arch/m68k/platform/coldfire/entry.S index 281e38c2b6c7..881ab8e379d4 100644 --- a/arch/m68k/platform/coldfire/entry.S +++ b/arch/m68k/platform/coldfire/entry.S | |||
| @@ -152,7 +152,7 @@ Lsignal_return: | |||
| 152 | subql #4,%sp /* dummy return address */ | 152 | subql #4,%sp /* dummy return address */ |
| 153 | SAVE_SWITCH_STACK | 153 | SAVE_SWITCH_STACK |
| 154 | pea %sp@(SWITCH_STACK_SIZE) | 154 | pea %sp@(SWITCH_STACK_SIZE) |
| 155 | jsr do_signal | 155 | jsr do_notify_resume |
| 156 | addql #4,%sp | 156 | addql #4,%sp |
| 157 | RESTORE_SWITCH_STACK | 157 | RESTORE_SWITCH_STACK |
| 158 | addql #4,%sp | 158 | addql #4,%sp |
