diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/s390/sem_post.c')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/s390/sem_post.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c index 4c26857f50..df64c03ba6 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c +++ b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c @@ -30,9 +30,16 @@ __new_sem_post (sem_t *sem) { int oldval; int newval; + int err; lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1"); - lll_futex_wake ((int *) sem, newval); + err = lll_futex_wake(((int *) sem), newval); + if (err != 0) + { + __set_errno(-err); + return -1; + } + return 0; } versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1); #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1) |