This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH, HURD]: Fix sbrk beyond 128MB
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: libc-alpha at sources dot redhat dot com
- Date: Mon, 14 Sep 2009 01:04:59 +0200
- Subject: [PATCH, HURD]: Fix sbrk beyond 128MB
Hello,
The patch below fixes sbrk() calls beyond the initial allocation of
128MB: passing pagebrk makes the kernel return an error when there is
some room (but not enough for the desired increase) between pagebrk and
_hurd_data_end where vm is already allocated.
Samuel
2009-09-14 Samuel Thibault <samuel.thibault@ens-lyon.org>
* sysdeps/mach/hurd/brk.c (_hurd_set_brk): Pass a copy of _hurd_data_end
instead of pagebrk to __vm_allocate.
---
brk.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sysdeps/mach/hurd/brk.c b/sysdeps/mach/hurd/brk.c
index 931b260..087dbdd 100644
--- a/sysdeps/mach/hurd/brk.c
+++ b/sysdeps/mach/hurd/brk.c
@@ -101,8 +101,10 @@ _hurd_set_brk (vm_address_t addr)
if (pagend > _hurd_data_end)
{
+ vm_address_t alloc_start = _hurd_data_end;
/* We didn't allocate enough space! Hopefully we can get some more! */
- err = __vm_allocate (__mach_task_self (), &pagebrk, pagend - pagebrk, 0);
+ err = __vm_allocate (__mach_task_self (), &alloc_start,
+ pagend - alloc_start, 0);
if (! err)
_hurd_data_end = pagend;
}