git.samba.org
/
sfrench
/
cifs-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq
[sfrench/cifs-2.6.git]
/
arch
/
s390
/
kernel
/
ptrace.c
diff --git
a/arch/s390/kernel/ptrace.c
b/arch/s390/kernel/ptrace.c
index 28afff4e5d1b3594f33b2f0141a5d4d7fe53e4f7..6e036bae987534d0c46e05159e6de1f310cc41bd 100644
(file)
--- a/
arch/s390/kernel/ptrace.c
+++ b/
arch/s390/kernel/ptrace.c
@@
-86,13
+86,13
@@
FixPerRegisters(struct task_struct *task)
per_info->control_regs.bits.storage_alt_space_ctl = 0;
}
per_info->control_regs.bits.storage_alt_space_ctl = 0;
}
-
static void set
_single_step(struct task_struct *task)
+
void user_enable
_single_step(struct task_struct *task)
{
task->thread.per_info.single_step = 1;
FixPerRegisters(task);
}
{
task->thread.per_info.single_step = 1;
FixPerRegisters(task);
}
-
static void clear
_single_step(struct task_struct *task)
+
void user_disable
_single_step(struct task_struct *task)
{
task->thread.per_info.single_step = 0;
FixPerRegisters(task);
{
task->thread.per_info.single_step = 0;
FixPerRegisters(task);
@@
-107,7
+107,7
@@
void
ptrace_disable(struct task_struct *child)
{
/* make sure the single step bit is not set. */
ptrace_disable(struct task_struct *child)
{
/* make sure the single step bit is not set. */
-
clear
_single_step(child);
+
user_disable
_single_step(child);
}
#ifndef CONFIG_64BIT
}
#ifndef CONFIG_64BIT
@@
-314,10
+314,7
@@
do_ptrace_normal(struct task_struct *child, long request, long addr, long data)
/* Remove high order bit from address (only for 31 bit). */
addr &= PSW_ADDR_INSN;
/* write the word at location addr. */
/* Remove high order bit from address (only for 31 bit). */
addr &= PSW_ADDR_INSN;
/* write the word at location addr. */
- copied = access_process_vm(child, addr, &data, sizeof(data),1);
- if (copied != sizeof(data))
- return -EIO;
- return 0;
+ return generic_ptrace_pokedata(child, addr, data);
case PTRACE_POKEUSR:
/* write the word at location addr in the USER area */
case PTRACE_POKEUSR:
/* write the word at location addr in the USER area */
@@
-654,7
+651,7
@@
do_ptrace(struct task_struct *child, long request, long addr, long data)
clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
child->exit_code = data;
/* make sure the single step bit is not set. */
clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
child->exit_code = data;
/* make sure the single step bit is not set. */
-
clear
_single_step(child);
+
user_disable
_single_step(child);
wake_up_process(child);
return 0;
wake_up_process(child);
return 0;
@@
-668,7
+665,7
@@
do_ptrace(struct task_struct *child, long request, long addr, long data)
return 0;
child->exit_code = SIGKILL;
/* make sure the single step bit is not set. */
return 0;
child->exit_code = SIGKILL;
/* make sure the single step bit is not set. */
-
clear
_single_step(child);
+
user_disable
_single_step(child);
wake_up_process(child);
return 0;
wake_up_process(child);
return 0;
@@
-678,19
+675,11
@@
do_ptrace(struct task_struct *child, long request, long addr, long data)
return -EIO;
clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
child->exit_code = data;
return -EIO;
clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
child->exit_code = data;
- if (data)
- set_tsk_thread_flag(child, TIF_SINGLE_STEP);
- else
- set_single_step(child);
+ user_enable_single_step(child);
/* give it a chance to run. */
wake_up_process(child);
return 0;
/* give it a chance to run. */
wake_up_process(child);
return 0;
- case PTRACE_DETACH:
- /* detach a process that was attached. */
- return ptrace_detach(child, data);
-
-
/* Do requests that differ for 31/64 bit */
default:
#ifdef CONFIG_COMPAT
/* Do requests that differ for 31/64 bit */
default:
#ifdef CONFIG_COMPAT