[klibc] Hopefully correct the handing of error return for s390/s390x
s390 was comparing against an outdated max errno value.
s390x was additionally getting the sign wrong in errno.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
diff --git a/usr/klibc/arch/s390/syscall.c b/usr/klibc/arch/s390/syscall.c
index 0d6b27e..60fab13 100644
--- a/usr/klibc/arch/s390/syscall.c
+++ b/usr/klibc/arch/s390/syscall.c
@@ -7,9 +7,9 @@
*/
#include <errno.h>
-long int __syscall_common(long int err)
+unsigned long __syscall_common(unsigned long)
{
- if ((unsigned long)(err) < (unsigned long)(-125))
+ if (err < -4095UL)
return err;
errno = -err;
return -1;
diff --git a/usr/klibc/arch/s390x/syscall.c b/usr/klibc/arch/s390x/syscall.c
index c0f17c4..3a7dd77 100644
--- a/usr/klibc/arch/s390x/syscall.c
+++ b/usr/klibc/arch/s390x/syscall.c
@@ -1,5 +1,5 @@
/*
- * arch/s390/syscall.c
+ * arch/s390x/syscall.c
*
* Common error-handling path for system calls.
* The return value from __syscall_common becomes the
@@ -7,10 +7,10 @@
*/
#include <errno.h>
-long int __syscall_common(long int err)
+unsigned long __syscall_common(unsigned long err)
{
- if ((unsigned long)(err) < (unsigned long)(-125))
+ if (err < -4095UL)
return err;
- errno = err;
+ errno = -err;
return -1;
}