make m32r handle multiple pending signals

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Al Viro and committed by Linus Torvalds a7481024 a7f8388e

+6 -4
+2 -2
arch/m32r/kernel/entry.S
··· 235 235 work_notifysig: ; deal with pending signals and 236 236 ; notify-resume requests 237 237 mv r0, sp ; arg1 : struct pt_regs *regs 238 - ldi r1, r9 ; arg2 : __u32 thread_info_flags 238 + mv r1, r9 ; arg2 : __u32 thread_info_flags 239 239 bl do_notify_resume 240 - bra restore_all 240 + bra resume_userspace 241 241 242 242 ; perform syscall exit tracing 243 243 ALIGN
+4 -2
arch/m32r/kernel/signal.c
··· 282 282 regs->bpc -= 2; 283 283 else 284 284 regs->bpc -= 4; 285 + regs->syscall_nr = -1; 285 286 } 286 287 } 287 288 ··· 354 353 regs->bpc -= 2; 355 354 else 356 355 regs->bpc -= 4; 357 - } 358 - if (regs->r0 == -ERESTART_RESTARTBLOCK){ 356 + regs->syscall_nr = -1; 357 + } else if (regs->r0 == -ERESTART_RESTARTBLOCK){ 359 358 regs->r0 = regs->orig_r0; 360 359 regs->r7 = __NR_restart_syscall; 361 360 inst = *(unsigned short *)(regs->bpc - 2); ··· 363 362 regs->bpc -= 2; 364 363 else 365 364 regs->bpc -= 4; 365 + regs->syscall_nr = -1; 366 366 } 367 367 } 368 368 if (test_thread_flag(TIF_RESTORE_SIGMASK)) {