* sysdeps/mach/hurd/brk.c (_hurd_set_brk): Deallocate and reallocate
pages rather than just reprotecting them. This way we don't hold on to the backing space.
This commit is contained in:
parent
349447daaf
commit
55ffcab7b6
@ -1,5 +1,9 @@
|
|||||||
1999-09-19 Roland McGrath <roland@baalperazim.frob.com>
|
1999-09-19 Roland McGrath <roland@baalperazim.frob.com>
|
||||||
|
|
||||||
|
* sysdeps/mach/hurd/brk.c (_hurd_set_brk): Deallocate and reallocate
|
||||||
|
pages rather than just reprotecting them. This way we don't hold on
|
||||||
|
to the backing space.
|
||||||
|
|
||||||
* hurd/hurdprio.c (_hurd_priority_which_map): Rearrange the code a bit.
|
* hurd/hurdprio.c (_hurd_priority_which_map): Rearrange the code a bit.
|
||||||
Use __munmap instead of __vm_deallocate.
|
Use __munmap instead of __vm_deallocate.
|
||||||
|
|
||||||
|
@ -72,9 +72,18 @@ _hurd_set_brk (vm_address_t addr)
|
|||||||
if (pagend <= pagebrk)
|
if (pagend <= pagebrk)
|
||||||
{
|
{
|
||||||
if (pagend < pagebrk)
|
if (pagend < pagebrk)
|
||||||
/* Make that memory inaccessible. */
|
{
|
||||||
__vm_protect (__mach_task_self (), pagend, pagebrk - pagend,
|
/* XXX wish this were atomic... */
|
||||||
0, VM_PROT_NONE);
|
/* First deallocate the memory to release its backing space. */
|
||||||
|
__vm_deallocate (__mach_task_self (), pagend, pagebrk - pagend);
|
||||||
|
/* Now reallocate it with no access allowed. */
|
||||||
|
err = __vm_map (__mach_task_self (),
|
||||||
|
&pagend, _hurd_data_end - pagend,
|
||||||
|
0, 0, MACH_PORT_NULL, 0, 0,
|
||||||
|
0, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE,
|
||||||
|
VM_INHERIT_COPY);
|
||||||
|
/* XXX what if error? */
|
||||||
|
}
|
||||||
_hurd_brk = addr;
|
_hurd_brk = addr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user