diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-06 16:20:10 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-06 16:20:10 -0400 |
| commit | c6799ade4ae04b53a5f677e5289116155ff01574 (patch) | |
| tree | 3601b5e2387e39d62c207e4268c6cc5c68f2a364 /arch/arm/kernel/signal.c | |
| parent | b7405e16435f710edfae6ba32bef4ca20d3de145 (diff) | |
| parent | 5cd47155155a32e5b944ac9fc3f3dc578e429aa0 (diff) | |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (82 commits)
[ARM] Add comments marking in-use ptrace numbers
[ARM] Move syscall saving out of the way of utrace
[ARM] 4360/1: S3C24XX: regs-udc.h remove unused macro
[ARM] 4358/1: S3C24XX: mach-qt2410.c: remove linux/mmc/protocol.h header
[ARM] mm 10: allow memory type to be specified with ioremap
[ARM] mm 9: add additional device memory types
[ARM] mm 8: define mem_types table L1 bit 4 to be for ARMv6
[ARM] iop: add missing parens in macro
[ARM] mm 7: remove duplicated __ioremap() prototypes
ARM: OMAP: fix OMAP1 mpuio suspend/resume oops
ARM: OMAP: MPUIO wake updates
ARM: OMAP: speed up gpio irq handling
ARM: OMAP: plat-omap changes for 2430 SDP
ARM: OMAP: gpio object shrinkage, cleanup
ARM: OMAP: /sys/kernel/debug/omap_gpio
ARM: OMAP: Implement workaround for GPIO wakeup bug in OMAP2420 silicon
ARM: OMAP: Enable 24xx GPIO autoidling
[ARM] 4318/2: DSM-G600 Board Support
[ARM] 4227/1: minor head.S fixups
[ARM] 4328/1: Move i.MX UART regs to driver
...
Diffstat (limited to 'arch/arm/kernel/signal.c')
| -rw-r--r-- | arch/arm/kernel/signal.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 3843d3bab2dd..54cdf1aeefc3 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | */ | 9 | */ |
| 10 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
| 11 | #include <linux/signal.h> | 11 | #include <linux/signal.h> |
| 12 | #include <linux/ptrace.h> | ||
| 13 | #include <linux/personality.h> | 12 | #include <linux/personality.h> |
| 14 | #include <linux/freezer.h> | 13 | #include <linux/freezer.h> |
| 15 | 14 | ||
| @@ -285,11 +284,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs) | |||
| 285 | if (restore_sigframe(regs, frame)) | 284 | if (restore_sigframe(regs, frame)) |
| 286 | goto badframe; | 285 | goto badframe; |
| 287 | 286 | ||
| 288 | /* Send SIGTRAP if we're single-stepping */ | 287 | single_step_trap(current); |
| 289 | if (current->ptrace & PT_SINGLESTEP) { | ||
| 290 | ptrace_cancel_bpt(current); | ||
| 291 | send_sig(SIGTRAP, current, 1); | ||
| 292 | } | ||
| 293 | 288 | ||
| 294 | return regs->ARM_r0; | 289 | return regs->ARM_r0; |
| 295 | 290 | ||
| @@ -324,11 +319,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) | |||
| 324 | if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT) | 319 | if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->ARM_sp) == -EFAULT) |
| 325 | goto badframe; | 320 | goto badframe; |
| 326 | 321 | ||
| 327 | /* Send SIGTRAP if we're single-stepping */ | 322 | single_step_trap(current); |
| 328 | if (current->ptrace & PT_SINGLESTEP) { | ||
| 329 | ptrace_cancel_bpt(current); | ||
| 330 | send_sig(SIGTRAP, current, 1); | ||
| 331 | } | ||
| 332 | 323 | ||
| 333 | return regs->ARM_r0; | 324 | return regs->ARM_r0; |
| 334 | 325 | ||
| @@ -644,14 +635,12 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) | |||
| 644 | if (try_to_freeze()) | 635 | if (try_to_freeze()) |
| 645 | goto no_signal; | 636 | goto no_signal; |
| 646 | 637 | ||
| 647 | if (current->ptrace & PT_SINGLESTEP) | 638 | single_step_clear(current); |
| 648 | ptrace_cancel_bpt(current); | ||
| 649 | 639 | ||
| 650 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); | 640 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); |
| 651 | if (signr > 0) { | 641 | if (signr > 0) { |
| 652 | handle_signal(signr, &ka, &info, oldset, regs, syscall); | 642 | handle_signal(signr, &ka, &info, oldset, regs, syscall); |
| 653 | if (current->ptrace & PT_SINGLESTEP) | 643 | single_step_set(current); |
| 654 | ptrace_set_bpt(current); | ||
| 655 | return 1; | 644 | return 1; |
| 656 | } | 645 | } |
| 657 | 646 | ||
| @@ -705,8 +694,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) | |||
| 705 | restart_syscall(regs); | 694 | restart_syscall(regs); |
| 706 | } | 695 | } |
| 707 | } | 696 | } |
| 708 | if (current->ptrace & PT_SINGLESTEP) | 697 | single_step_set(current); |
| 709 | ptrace_set_bpt(current); | ||
| 710 | return 0; | 698 | return 0; |
| 711 | } | 699 | } |
| 712 | 700 | ||
