Return errno on failure in allocate_stack
authorCarlos O'Donell <carlos@codesourcery.com>
Thu, 15 Dec 2011 02:32:11 +0000 (21:32 -0500)
committerCarlos O'Donell <carlos@codesourcery.com>
Thu, 15 Dec 2011 02:32:11 +0000 (21:32 -0500)
In cases where a function call fails return
errno and allow the caller to fixup the return
code as required by their API.

nptl/ChangeLog
nptl/allocatestack.c

index bdf6129..b622fe7 100644 (file)
@@ -1,3 +1,7 @@
+2011-12-14  Carlos O'Donell  <carlos@systemhalted.org>
+
+       * allocatestack.c (allocate_stack): Return errno on failure.
+
 2011-12-14  Jeff Law  <law@redhat.com>
 
        [BZ #5245]
index 36b4aa1..b1b17ce 100644 (file)
@@ -435,7 +435,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
        {
          /* Something went wrong.  */
          assert (errno == ENOMEM);
-         return EAGAIN;
+         return errno;
        }
 
 
@@ -496,12 +496,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
                      MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
 
          if (__builtin_expect (mem == MAP_FAILED, 0))
-           {
-             if (errno == ENOMEM)
-               __set_errno (EAGAIN);
-
-              return errno;
-           }
+           return errno;
 
          /* SIZE is guaranteed to be greater than zero.
             So we can never get a null pointer back from mmap.  */
@@ -581,7 +576,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
              /* Free the stack memory we just allocated.  */
              (void) munmap (mem, size);
 
-             return EAGAIN;
+             return errno;
            }
 
 
@@ -636,10 +631,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 #endif
          if (mprotect (guard, guardsize, PROT_NONE) != 0)
            {
-             int err;
            mprot_error:
-             err = errno == ENOMEM ? EAGAIN : errno;
-
              lll_lock (stack_cache_lock, LLL_PRIVATE);
 
              /* Remove the thread from the list.  */
@@ -657,7 +649,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
                 is nothing we could do.  */
              (void) munmap (mem, size);
 
-             return err;
+             return errno;
            }
 
          pd->guardsize = guardsize;