]>
Commit | Line | Data |
---|---|---|
12788f63 MT |
1 | Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c |
2 | =================================================================== | |
3 | --- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c | |
4 | +++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c | |
5 | @@ -994,7 +994,16 @@ setxid_mark_thread (struct xid_command * | |
6 | ||
7 | /* If the thread is exiting right now, ignore it. */ | |
8 | if ((ch & EXITING_BITMASK) != 0) | |
9 | - return; | |
10 | + { | |
11 | + /* Release the futex if there is no other setxid in | |
12 | + progress. */ | |
13 | + if ((ch & SETXID_BITMASK) == 0) | |
14 | + { | |
15 | + t->setxid_futex = 1; | |
16 | + lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE); | |
17 | + } | |
18 | + return; | |
19 | + } | |
20 | } | |
21 | while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling, | |
22 | ch | SETXID_BITMASK, ch)); |