Merge with git+ssh://master.kernel.org/pub/scm/libs/klibc/klibc.git
diff --git a/usr/include/arch/s390x/klibc/archstat.h b/usr/include/arch/s390x/klibc/archstat.h
index d74167d..1319e6b 100644
--- a/usr/include/arch/s390x/klibc/archstat.h
+++ b/usr/include/arch/s390x/klibc/archstat.h
@@ -7,7 +7,6 @@
 
 struct stat {
 	__stdev64	(st_dev);
-        unsigned long	st_dev;
         unsigned long	st_ino;
         unsigned long	st_nlink;
         unsigned int	st_mode;
diff --git a/usr/kinit/initrd.c b/usr/kinit/initrd.c
index 233549c..cfa059d 100644
--- a/usr/kinit/initrd.c
+++ b/usr/kinit/initrd.c
@@ -117,7 +117,7 @@
 	     chroot(".") )
 		return -errno;
 
-	pid = vfork();
+	pid = fork();
 	if ( pid == 0 ) {
 		setsid();
 		/* Looks like linuxrc doesn't get the init environment
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;
 }