summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/allocatestack.c11
2 files changed, 12 insertions, 4 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6cd9b0dbd8..db3aeba3f7 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-18  Ulrich Drepper  <drepper@redhat.com>
+
+	* allocatestack.c (allocate_stack): Return EAGAIN instead of
+	ENOMEM when out of memory.
+
 2004-09-10  Roland McGrath  <roland@redhat.com>
 
 	[BZ #379]
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 6dd2621d99..cbdd781eeb 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -366,8 +366,11 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 
       /* Allocate the DTV for this thread.  */
       if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL)
-	/* Something went wrong.  */
-	return errno;
+	{
+	  /* Something went wrong.  */
+	  assert (errno == ENOMEM);
+	  return EAGAIN;
+	}
 
 
       /* Prepare to modify global data.  */
@@ -498,12 +501,12 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 	  if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL)
 	    {
 	      /* Something went wrong.  */
-	      int err = errno;
+	      assert (errno == ENOMEM);
 
 	      /* Free the stack memory we just allocated.  */
 	      (void) munmap (mem, size);
 
-	      return err;
+	      return EAGAIN;
 	    }