Don't simulate a pseudo address-space beyond VM_MAXUSER_ADDRESS that
maps onto the upages. We used to use this extensively, particularly for ps and gdb. Both of these have been "fixed". ps gets the p_stats via eproc along with all the other stats, and gdb uses the regs, fpregs etc files. Once apon a time the UPAGES were mapped here, but that changed back in January '96. This essentially kills my revisions 1.16 and 1.17. The 2-page "hole" above the stack can be reclaimed now.
This commit is contained in:
parent
1c61bdc8eb
commit
99b30c79b0
@ -128,46 +128,6 @@ procfs_rwmem(curp, p, uio)
|
||||
*/
|
||||
len = min(PAGE_SIZE - page_offset, uio->uio_resid);
|
||||
|
||||
if (uva >= VM_MAXUSER_ADDRESS) {
|
||||
vm_offset_t tkva;
|
||||
|
||||
if (writing ||
|
||||
uva >= VM_MAXUSER_ADDRESS + UPAGES * PAGE_SIZE ||
|
||||
(ptrace_read_u_check(p,
|
||||
uva - (vm_offset_t) VM_MAXUSER_ADDRESS,
|
||||
(size_t) len) &&
|
||||
!procfs_kmemaccess(curp))) {
|
||||
error = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* we are reading the "U area", force it into core */
|
||||
PHOLD(p);
|
||||
|
||||
/* sanity check */
|
||||
if (!(p->p_flag & P_INMEM)) {
|
||||
/* aiee! */
|
||||
PRELE(p);
|
||||
error = EFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
/* populate the ptrace/procfs area */
|
||||
p->p_addr->u_kproc.kp_proc = *p;
|
||||
fill_eproc (p, &p->p_addr->u_kproc.kp_eproc);
|
||||
|
||||
/* locate the in-core address */
|
||||
tkva = (uintptr_t)p->p_addr + uva - VM_MAXUSER_ADDRESS;
|
||||
|
||||
/* transfer it */
|
||||
error = uiomove((caddr_t)tkva, len, uio);
|
||||
|
||||
/* let the pages go */
|
||||
PRELE(p);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fault the page on behalf of the process
|
||||
*/
|
||||
|
@ -128,46 +128,6 @@ procfs_rwmem(curp, p, uio)
|
||||
*/
|
||||
len = min(PAGE_SIZE - page_offset, uio->uio_resid);
|
||||
|
||||
if (uva >= VM_MAXUSER_ADDRESS) {
|
||||
vm_offset_t tkva;
|
||||
|
||||
if (writing ||
|
||||
uva >= VM_MAXUSER_ADDRESS + UPAGES * PAGE_SIZE ||
|
||||
(ptrace_read_u_check(p,
|
||||
uva - (vm_offset_t) VM_MAXUSER_ADDRESS,
|
||||
(size_t) len) &&
|
||||
!procfs_kmemaccess(curp))) {
|
||||
error = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* we are reading the "U area", force it into core */
|
||||
PHOLD(p);
|
||||
|
||||
/* sanity check */
|
||||
if (!(p->p_flag & P_INMEM)) {
|
||||
/* aiee! */
|
||||
PRELE(p);
|
||||
error = EFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
/* populate the ptrace/procfs area */
|
||||
p->p_addr->u_kproc.kp_proc = *p;
|
||||
fill_eproc (p, &p->p_addr->u_kproc.kp_eproc);
|
||||
|
||||
/* locate the in-core address */
|
||||
tkva = (uintptr_t)p->p_addr + uva - VM_MAXUSER_ADDRESS;
|
||||
|
||||
/* transfer it */
|
||||
error = uiomove((caddr_t)tkva, len, uio);
|
||||
|
||||
/* let the pages go */
|
||||
PRELE(p);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fault the page on behalf of the process
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user