diff options
author | peter <peter@FreeBSD.org> | 2001-08-08 05:25:15 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2001-08-08 05:25:15 +0000 |
commit | bb5c43c4b860ad46968f5c811e6a704114915724 (patch) | |
tree | 9c1725fe17f3d99c873d801333a60db6ec49fb59 /sys/kern/sys_process.c | |
parent | 185e591533d493e9aa5e937d42e40833936ae6f4 (diff) | |
download | FreeBSD-src-bb5c43c4b860ad46968f5c811e6a704114915724.zip FreeBSD-src-bb5c43c4b860ad46968f5c811e6a704114915724.tar.gz |
Zap 'ptrace(PT_READ_U, ...)' and 'ptrace(PT_WRITE_U, ...)' since they
are a really nasty interface that should have been killed long ago
when 'ptrace(PT_[SG]ETREGS' etc came along. The entity that they
operate on (struct user) will not be around much longer since it
is part-per-process and part-per-thread in a post-KSE world.
gdb does not actually use this except for the obscure 'info udot'
command which does a hexdump of as much of the child's 'struct user'
as it can get. It carries its own #defines so it doesn't break
compiles.
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 66d7e67..a81a768 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -256,10 +256,8 @@ ptrace(curp, uap) case PT_READ_I: case PT_READ_D: - case PT_READ_U: case PT_WRITE_I: case PT_WRITE_D: - case PT_WRITE_U: case PT_CONTINUE: case PT_KILL: case PT_STEP: @@ -448,47 +446,6 @@ ptrace(curp, uap) } return (error); - case PT_READ_U: - if ((uintptr_t)uap->addr > UPAGES * PAGE_SIZE - sizeof(int)) { - return EFAULT; - } - if ((uintptr_t)uap->addr & (sizeof(int) - 1)) { - return EFAULT; - } - if (ptrace_read_u_check(p,(vm_offset_t) uap->addr, - sizeof(int))) { - return EFAULT; - } - error = 0; - PHOLD(p); /* user had damn well better be incore! */ - mtx_lock_spin(&sched_lock); - if (p->p_sflag & PS_INMEM) { - mtx_unlock_spin(&sched_lock); - fill_kinfo_proc (p, &p->p_addr->u_kproc); - curp->p_retval[0] = *(int *) - ((uintptr_t)p->p_addr + (uintptr_t)uap->addr); - } else { - mtx_unlock_spin(&sched_lock); - curp->p_retval[0] = 0; - error = EFAULT; - } - PRELE(p); - return error; - - case PT_WRITE_U: - PHOLD(p); /* user had damn well better be incore! */ - mtx_lock_spin(&sched_lock); - if (p->p_sflag & PS_INMEM) { - mtx_unlock_spin(&sched_lock); - fill_kinfo_proc (p, &p->p_addr->u_kproc); - error = ptrace_write_u(p, (vm_offset_t)uap->addr, uap->data); - } else { - mtx_unlock_spin(&sched_lock); - error = EFAULT; - } - PRELE(p); - return error; - case PT_KILL: uap->data = SIGKILL; goto sendsig; /* in PT_CONTINUE above */ |