# From Bodo Stroesser - Make singlestep_syscall generic rather than being # restricted to tt mode. Index: new/arch/um/kernel/signal_kern.c =================================================================== Signed-off-by: Paolo 'Blaisorblade' Giarrusso --- um-linux-2.4.27-paolo/arch/um/kernel/signal_kern.c | 2 +- um-linux-2.4.27-paolo/arch/um/kernel/tt/process_kern.c | 2 +- um-linux-2.4.27-paolo/arch/um/kernel/tt/syscall_kern.c | 4 ++-- um-linux-2.4.27-paolo/include/asm-um/processor-generic.h | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff -puN arch/um/kernel/signal_kern.c~syscall-security-2 arch/um/kernel/signal_kern.c --- um-linux-2.4.27/arch/um/kernel/signal_kern.c~syscall-security-2 2005-04-15 11:13:13.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/signal_kern.c 2005-04-15 11:13:13.000000000 +0200 @@ -253,7 +253,7 @@ static int kern_do_signal(struct pt_regs */ if((current->ptrace & PT_DTRACE) && is_syscall(PT_REGS_IP(¤t->thread.regs))) - (void) CHOOSE_MODE(current->thread.mode.tt.singlestep_syscall = 1, 0); + current->thread.singlestep_syscall = 1; return(0); } diff -puN arch/um/kernel/tt/process_kern.c~syscall-security-2 arch/um/kernel/tt/process_kern.c --- um-linux-2.4.27/arch/um/kernel/tt/process_kern.c~syscall-security-2 2005-04-15 11:13:13.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/tt/process_kern.c 2005-04-15 11:13:13.000000000 +0200 @@ -501,7 +501,7 @@ int singlestepping_tt(void *t) { struct task_struct *task = t; - if(task->thread.mode.tt.singlestep_syscall) + if(task->thread.singlestep_syscall) return(0); return(task->ptrace & PT_DTRACE); } diff -puN arch/um/kernel/tt/syscall_kern.c~syscall-security-2 arch/um/kernel/tt/syscall_kern.c --- um-linux-2.4.27/arch/um/kernel/tt/syscall_kern.c~syscall-security-2 2005-04-15 11:13:13.000000000 +0200 +++ um-linux-2.4.27-paolo/arch/um/kernel/tt/syscall_kern.c 2005-04-15 11:13:13.000000000 +0200 @@ -121,8 +121,8 @@ long execute_syscall_tt(void *r) set_fs(USER_DS); - if(current->thread.mode.tt.singlestep_syscall){ - current->thread.mode.tt.singlestep_syscall = 0; + if(current->thread.singlestep_syscall){ + current->thread.singlestep_syscall = 0; current->ptrace &= ~PT_DTRACE; force_sig(SIGTRAP, current); } diff -puN include/asm-um/processor-generic.h~syscall-security-2 include/asm-um/processor-generic.h --- um-linux-2.4.27/include/asm-um/processor-generic.h~syscall-security-2 2005-04-15 11:13:13.000000000 +0200 +++ um-linux-2.4.27-paolo/include/asm-um/processor-generic.h 2005-04-15 11:13:13.000000000 +0200 @@ -29,6 +29,7 @@ struct thread_struct { unsigned long cr2; int err; unsigned long trap_no; + int singlestep_syscall; void *fault_addr; void *fault_catcher; struct task_struct *prev_sched; _