mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
Return errno on failure in allocate_stack
In cases where a function call fails return errno and allow the caller to fixup the return code as required by their API.
This commit is contained in:
parent
e988dba98d
commit
caafb2b06b
@ -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]
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user