2009-12-09 19:52:56

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH] s390: ptrace: don't abuse PT_PTRACED

Untested, but hopefully trivial enough and should't change the
compiled code.

Nobody except ptrace itself should use task->ptrace or PT_PTRACED
directly, change arch/s390/kernel/traps.c to use the helper.

Signed-off-by: Oleg Nesterov <[email protected]>
Acked-by: Roland McGrath <[email protected]>
---

arch/s390/kernel/traps.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- V1/arch/s390/kernel/traps.c~S390_DONT_ABUSE_PT_PTRACED 2009-04-06 00:03:36.000000000 +0200
+++ V1/arch/s390/kernel/traps.c 2009-12-09 20:31:49.000000000 +0100
@@ -18,7 +18,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/ptrace.h>
+#include <linux/tracehook.h>
#include <linux/timer.h>
#include <linux/mm.h>
#include <linux/smp.h>
@@ -382,7 +382,7 @@ void __kprobes do_single_step(struct pt_
SIGTRAP) == NOTIFY_STOP){
return;
}
- if ((current->ptrace & PT_PTRACED) != 0)
+ if (tracehook_consider_fatal_signal(current, SIGTRAP))
force_sig(SIGTRAP, current);
}

@@ -483,7 +483,7 @@ static void illegal_op(struct pt_regs *
if (get_user(*((__u16 *) opcode), (__u16 __user *) location))
return;
if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) {
- if (current->ptrace & PT_PTRACED)
+ if (tracehook_consider_fatal_signal(current, SIGTRAP))
force_sig(SIGTRAP, current);
else
signal = SIGILL;


2009-12-09 20:51:30

by Heiko Carstens

[permalink] [raw]
Subject: Re: [PATCH] s390: ptrace: don't abuse PT_PTRACED

On Wed, Dec 09, 2009 at 08:46:51PM +0100, Oleg Nesterov wrote:
> Untested, but hopefully trivial enough and should't change the
> compiled code.
>
> Nobody except ptrace itself should use task->ptrace or PT_PTRACED
> directly, change arch/s390/kernel/traps.c to use the helper.
>
> Signed-off-by: Oleg Nesterov <[email protected]>
> Acked-by: Roland McGrath <[email protected]>

> - if ((current->ptrace & PT_PTRACED) != 0)
> + if (tracehook_consider_fatal_signal(current, SIGTRAP))
> force_sig(SIGTRAP, current);

Thanks, applied. Even though I'm wondering why tracehook_consider_fatal_signal
has a signal parameter and doesn't do anything with it.
Is that something that will change with utrace?

2009-12-09 20:55:22

by Roland McGrath

[permalink] [raw]
Subject: Re: [PATCH] s390: ptrace: don't abuse PT_PTRACED

> Thanks, applied. Even though I'm wondering why tracehook_consider_fatal_signal
> has a signal parameter and doesn't do anything with it.
> Is that something that will change with utrace?

It doesn't change with utrace of today. But it gives enough information
for future tracing implementations to change that logic without rejiggering
all the arch code.


Thanks,
Roland