diff mbox

[1/6] Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN

Message ID CAMe9rOrLUBih4UOrn=bb9uwi29y1FzzYUTwxHxLwRQHzYjZDZQ@mail.gmail.com
State New
Headers show

Commit Message

H.J. Lu Aug. 21, 2015, 4:05 p.m. UTC
On Fri, Aug 21, 2015 at 8:09 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> On Wed, 19 Aug 2015, H.J. Lu wrote:
>
>> I will check in this on Friday unless there is an objection.
>
> What's the evidence of consensus for the patch you checked in?  It's not
> clear that anyone reviewed the substance of it at all.
>
> Problems I note in the committed patch include:
>
> -    return INLINE_SYSCALL (lstat, 2, name, (struct kernel_stat *) buf);
> +    return INLINE_SYSCALL_ERROR_RETURN (lstat, 2, int, name,
> +                                       (struct kernel_stat *) buf);

I checked in this patch:

ommit e4ad5e722cec9a274cd84585d9c33f696e36f847
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Aug 21 08:32:36 2015 -0700

    Fix a typo in linux lxstat.c

    * sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Fix a typo.


to fix it.

> where you're calling the wrong macro (should be INLINE_SYSCALL_RETURN),
> and the apparently arbitrary insertion of libc_hidden_* calls in
> sysdeps/unix/sysv/linux/sched_getaffinity.c, which ought to be in a
> separate patch.
>
> At this point I think this commit should be reverted as lacking consensus.
> Then a suitably cleaned up version needs to be reviewed properly before
> going in.  Silence does not generally mean consensus (we discussed such an
> idea for unmaintained architectures, but x86 is not an unmaintained
> architecture, it's maintained by community review).
>
> I suspect the patch would also better be split up into the most mechanical
> changes that don't change generated code at all, and the less obvious
> pieces needing more careful review.

My first patch is mechanical and there are no changes in generated code.
We can either revert my changes or fix my changes.

I believe my change is an improvement and we should fix its shortcomings.
Here is a patch to remove return value from INLINE_SYSCALL_ERROR_RETURN

Comments

Joseph Myers Aug. 21, 2015, 4:16 p.m. UTC | #1
On Fri, 21 Aug 2015, H.J. Lu wrote:

> My first patch is mechanical and there are no changes in generated code.

It's not mechanical, as evidenced by all the problems people have spotted 
looking at the code (presumably cases that don't apply on i386) and the 
random inclusion of *_hidden_* changes with no apparent relation to the 
main point of the patch.

> We can either revert my changes or fix my changes.
> 
> I believe my change is an improvement and we should fix its shortcomings.

I think the fix process should not happen on master, but a separate 
branch, with the changes being reverted until they have consensus.

This isn't a matter of fixing isolated bugs that a reviewer missed - if it 
were just that, then fixing on master would be fine.  It's a matter of 
there being no consensus on the basic design of the changes or the overall 
shape of the new interfaces being introduced (and no detailed review of 
the changes either).
H.J. Lu Aug. 21, 2015, 4:21 p.m. UTC | #2
On Fri, Aug 21, 2015 at 9:16 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> On Fri, 21 Aug 2015, H.J. Lu wrote:
>
>> My first patch is mechanical and there are no changes in generated code.
>
> It's not mechanical, as evidenced by all the problems people have spotted
> looking at the code (presumably cases that don't apply on i386) and the
> random inclusion of *_hidden_* changes with no apparent relation to the
> main point of the patch.
>
>> We can either revert my changes or fix my changes.
>>
>> I believe my change is an improvement and we should fix its shortcomings.
>
> I think the fix process should not happen on master, but a separate
> branch, with the changes being reverted until they have consensus.
>
> This isn't a matter of fixing isolated bugs that a reviewer missed - if it
> were just that, then fixing on master would be fine.  It's a matter of
> there being no consensus on the basic design of the changes or the overall
> shape of the new interfaces being introduced (and no detailed review of
> the changes either).

I did my work on a branch, which lead us here.  I can take out
the libc_hidden_def change in sysdeps/unix/sysv/linux/sched_getaffinity.c
which makes my change pure mechanical.
Joseph Myers Aug. 21, 2015, 4:34 p.m. UTC | #3
On Fri, 21 Aug 2015, H.J. Lu wrote:

> > I think the fix process should not happen on master, but a separate
> > branch, with the changes being reverted until they have consensus.
> >
> > This isn't a matter of fixing isolated bugs that a reviewer missed - if it
> > were just that, then fixing on master would be fine.  It's a matter of
> > there being no consensus on the basic design of the changes or the overall
> > shape of the new interfaces being introduced (and no detailed review of
> > the changes either).
> 
> I did my work on a branch, which lead us here.  I can take out

What got us here was committing the change to master when there was no 
consensus for it (no-one had actually reviewed the change carefully, 
looking at both the design of the interfaces involved and the specific 
changes to use them).

That isn't appropriate even for x86-specific changes (those still need 
consensus).  It's especially inappropriate for a general change to core 
architecture-independent code (Linux syscall handling), with design issues 
involved.

> the libc_hidden_def change in sysdeps/unix/sysv/linux/sched_getaffinity.c
> which makes my change pure mechanical.

The change involves introducing new interfaces.  The design of those 
interfaces is not a mechanical matter - it's something that needs careful 
consideration before the interfaces go on master, which simply hasn't 
happened.  Even with the removal of the last argument to 
INLINE_SYSCALL_ERROR_RETURN, I think the fact that it expects a negated 
errno argument and loads of callers have such a negation within the call 
indicates a defect in the design - a macro expecting a negated value 
should be used *only* in the cases where that's a direct pass through of 
the syscall return value in the caller.
diff mbox

Patch

From d5364cc6818c26066845717208f78ad809cf8804 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Fri, 21 Aug 2015 08:51:03 -0700
Subject: [PATCH] Remove return value from INLINE_SYSCALL_ERROR_RETURN

Syscall should return -1 when there is an error.  This patch removes
return value from INLINE_SYSCALL_ERROR_RETURN and makes it always
return -1.

	* sysdeps/unix/sysdep.h (INLINE_SYSCALL_ERROR_RETURN): Remove
	return value and return -1 casted to type.  Update comments.
	* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Updated.
	* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
	* sysdeps/unix/sysv/linux/eventfd.c (eventfd): Likewise.
	* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise.
	* sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise.
	* sysdeps/unix/sysv/linux/fcntl.c (do_fcntl): Likewise.
	* sysdeps/unix/sysv/linux/futimens.c (futimens): Likewise.
	* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
	* sysdeps/unix/sysv/linux/fxstat.c (__fxstat): Likewise.
	* sysdeps/unix/sysv/linux/fxstat64.c (___fxstat64): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat64.c (__fxstatat64): Likewise.
	* sysdeps/unix/sysv/linux/getpriority.c (__getpriority): Likewise.
	* sysdeps/unix/sysv/linux/llseek.c (__llseek): Likewise.
	* sysdeps/unix/sysv/linux/lutimes.c (lutimes): Likewise.
	* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise.
	* sysdeps/unix/sysv/linux/lxstat64.c (___lxstat64): Likewise.
	* sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/mq_open.c (__mq_open): Likewise.
	* sysdeps/unix/sysv/linux/mq_unlink.c (mq_unlink): Likewise.
	* sysdeps/unix/sysv/linux/prlimit.c (prlimit): Likewise.
	* sysdeps/unix/sysv/linux/readahead.c (__readahead): Likewise.
	* sysdeps/unix/sysv/linux/sched_getaffinity.c
	(__sched_getaffinity_new): Likewise.
	* sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise.
	* sysdeps/unix/sysv/linux/signalfd.c (signalfd): Likewise.
	* sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Likewise.
	* sysdeps/unix/sysv/linux/tcsendbrk.c (tcsendbreak): Likewise.
	* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
	* sysdeps/unix/sysv/linux/ustat.c (ustat): Likewise.
	* sysdeps/unix/sysv/linux/utimensat.c (utimensat): Likewise.
	* sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise.
	* sysdeps/unix/sysv/linux/xmknodat.c (__xmknodat): Likewise.
	* sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise.
	* sysdeps/unix/sysv/linux/xstat64.c (___xstat64): Likewise.
	* sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Likewise.
	(__xstat64_conv): Likewise.
	(__xstat32_conv): Likewise.
---
 sysdeps/unix/sysdep.h                       | 12 ++++++------
 sysdeps/unix/sysv/linux/adjtime.c           |  2 +-
 sysdeps/unix/sysv/linux/dl-openat64.c       |  2 +-
 sysdeps/unix/sysv/linux/eventfd.c           |  4 ++--
 sysdeps/unix/sysv/linux/faccessat.c         |  4 ++--
 sysdeps/unix/sysv/linux/fchmodat.c          |  4 ++--
 sysdeps/unix/sysv/linux/fcntl.c             |  2 +-
 sysdeps/unix/sysv/linux/futimens.c          |  4 ++--
 sysdeps/unix/sysv/linux/futimes.c           |  2 +-
 sysdeps/unix/sysv/linux/fxstat.c            |  4 ++--
 sysdeps/unix/sysv/linux/fxstat64.c          |  2 +-
 sysdeps/unix/sysv/linux/fxstatat.c          |  2 +-
 sysdeps/unix/sysv/linux/fxstatat64.c        |  4 ++--
 sysdeps/unix/sysv/linux/getpriority.c       |  2 +-
 sysdeps/unix/sysv/linux/llseek.c            |  2 +-
 sysdeps/unix/sysv/linux/lutimes.c           |  4 ++--
 sysdeps/unix/sysv/linux/lxstat.c            |  4 ++--
 sysdeps/unix/sysv/linux/lxstat64.c          |  2 +-
 sysdeps/unix/sysv/linux/mmap64.c            |  2 +-
 sysdeps/unix/sysv/linux/mq_open.c           |  2 +-
 sysdeps/unix/sysv/linux/mq_unlink.c         |  4 ++--
 sysdeps/unix/sysv/linux/prlimit.c           |  8 ++++----
 sysdeps/unix/sysv/linux/readahead.c         |  2 +-
 sysdeps/unix/sysv/linux/sched_getaffinity.c |  2 +-
 sysdeps/unix/sysv/linux/shmat.c             |  2 +-
 sysdeps/unix/sysv/linux/signalfd.c          |  4 ++--
 sysdeps/unix/sysv/linux/speed.c             |  4 ++--
 sysdeps/unix/sysv/linux/tcsendbrk.c         |  2 +-
 sysdeps/unix/sysv/linux/tcsetattr.c         |  2 +-
 sysdeps/unix/sysv/linux/ustat.c             |  2 +-
 sysdeps/unix/sysv/linux/utimensat.c         |  4 ++--
 sysdeps/unix/sysv/linux/xmknod.c            |  4 ++--
 sysdeps/unix/sysv/linux/xmknodat.c          |  4 ++--
 sysdeps/unix/sysv/linux/xstat.c             |  5 ++---
 sysdeps/unix/sysv/linux/xstat64.c           |  2 +-
 sysdeps/unix/sysv/linux/xstatconv.c         | 14 +++++++-------
 36 files changed, 65 insertions(+), 66 deletions(-)

diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h
index c4316db..abd5786 100644
--- a/sysdeps/unix/sysdep.h
+++ b/sysdeps/unix/sysdep.h
@@ -81,14 +81,14 @@ 
   INLINE_SYSCALL (name, nr, args)
 #endif
 
-/* Set error number and return value.  It should only be used with
-   function return.  ERR is the negative error number returned from
-   the majority of Linux kernels for which -ERR is no-op
-   with INTERNAL_SYSCALL_ERRNO.   */
+/* Set error number and return -1 which is casted to TYPE.  It should
+   only be used as function return value for syscall error.  ERR is the
+   negative error number returned from the majority of Linux kernels
+   for which -ERR is no-op with INTERNAL_SYSCALL_ERRNO.   */
 #ifndef INLINE_SYSCALL_ERROR_RETURN
-#define INLINE_SYSCALL_ERROR_RETURN(err, type, value) \
+#define INLINE_SYSCALL_ERROR_RETURN(err, type) \
   ({								\
     __set_errno (-err);						\
-    (type) (value);						\
+    (type) -1;							\
   })
 #endif
diff --git a/sysdeps/unix/sysv/linux/adjtime.c b/sysdeps/unix/sysv/linux/adjtime.c
index ad54cf8..2612d2b 100644
--- a/sysdeps/unix/sysv/linux/adjtime.c
+++ b/sysdeps/unix/sysv/linux/adjtime.c
@@ -61,7 +61,7 @@  ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv)
       tmp.tv_sec = itv->tv_sec + itv->tv_usec / 1000000L;
       tmp.tv_usec = itv->tv_usec % 1000000L;
       if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC)
-	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
       tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
       tntx.modes = ADJ_OFFSET_SINGLESHOT;
     }
diff --git a/sysdeps/unix/sysv/linux/dl-openat64.c b/sysdeps/unix/sysv/linux/dl-openat64.c
index ffb13f3..0374957 100644
--- a/sysdeps/unix/sysv/linux/dl-openat64.c
+++ b/sysdeps/unix/sysv/linux/dl-openat64.c
@@ -34,6 +34,6 @@  openat64 (dfd, file, oflag)
   return INLINE_SYSCALL_RETURN (openat, 3, int, dfd, file,
 				oflag | O_LARGEFILE);
 #else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 #endif
 }
diff --git a/sysdeps/unix/sysv/linux/eventfd.c b/sysdeps/unix/sysv/linux/eventfd.c
index 1496a0e..188e25c 100644
--- a/sysdeps/unix/sysv/linux/eventfd.c
+++ b/sysdeps/unix/sysv/linux/eventfd.c
@@ -41,12 +41,12 @@  eventfd (unsigned int count, int flags)
      kernel (sys_indirect) before implementing setting flags like
      O_NONBLOCK etc.  */
   if (flags != 0)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1)
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int)
 
 # ifdef __NR_eventfd
   return INLINE_SYSCALL_RETURN (eventfd, 1, int, count)
 # else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1)
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int)
 # endif
 #elif !defined __NR_eventfd2
 # error "__ASSUME_EVENTFD2 defined but not __NR_eventfd2"
diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c
index 6a0b1b7..176e711 100644
--- a/sysdeps/unix/sysv/linux/faccessat.c
+++ b/sysdeps/unix/sysv/linux/faccessat.c
@@ -35,7 +35,7 @@  faccessat (fd, file, mode, flag)
      int flag;
 {
   if (flag & ~(AT_SYMLINK_NOFOLLOW | AT_EACCESS))
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   if ((flag == 0 || ((flag & ~AT_EACCESS) == 0 && ! __libc_enable_secure)))
     return INLINE_SYSCALL_RETURN (faccessat, 3, int, fd, file, mode);
@@ -71,5 +71,5 @@  faccessat (fd, file, mode, flag)
   if (granted == mode)
     return 0;
 
-  return INLINE_SYSCALL_ERROR_RETURN (-EACCES, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-EACCES, int);
 }
diff --git a/sysdeps/unix/sysv/linux/fchmodat.c b/sysdeps/unix/sysv/linux/fchmodat.c
index 025634b..bba8be3 100644
--- a/sysdeps/unix/sysv/linux/fchmodat.c
+++ b/sysdeps/unix/sysv/linux/fchmodat.c
@@ -34,10 +34,10 @@  fchmodat (fd, file, mode, flag)
      int flag;
 {
   if (flag & ~AT_SYMLINK_NOFOLLOW)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 #ifndef __NR_lchmod		/* Linux so far has no lchmod syscall.  */
   if (flag & AT_SYMLINK_NOFOLLOW)
-    return INLINE_SYSCALL_ERROR_RETURN (-ENOTSUP, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-ENOTSUP, int);
 #endif
 
   return INLINE_SYSCALL_RETURN (fchmodat, 3, int, fd, file, mode);
diff --git a/sysdeps/unix/sysv/linux/fcntl.c b/sysdeps/unix/sysv/linux/fcntl.c
index a9a6b65..592fcb4 100644
--- a/sysdeps/unix/sysv/linux/fcntl.c
+++ b/sysdeps/unix/sysv/linux/fcntl.c
@@ -37,7 +37,7 @@  do_fcntl (int fd, int cmd, void *arg)
     return fex.type == F_OWNER_GID ? -fex.pid : fex.pid;
 
   return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (res, err),
-				      int, -1);
+				      int);
 }
 
 
diff --git a/sysdeps/unix/sysv/linux/futimens.c b/sysdeps/unix/sysv/linux/futimens.c
index dfc21c0..e069410 100644
--- a/sysdeps/unix/sysv/linux/futimens.c
+++ b/sysdeps/unix/sysv/linux/futimens.c
@@ -33,11 +33,11 @@  futimens (int fd, const struct timespec tsp[2])
 {
 #ifdef __NR_utimensat
   if (fd < 0)
-    return INLINE_SYSCALL_ERROR_RETURN (-EBADF, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EBADF, int);
   /* Avoid implicit array coercion in syscall macros.  */
   return INLINE_SYSCALL_RETURN (utimensat, 4, int, fd, NULL, &tsp[0], 0);
 #else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 #endif
 }
 #ifndef __NR_utimensat
diff --git a/sysdeps/unix/sysv/linux/futimes.c b/sysdeps/unix/sysv/linux/futimes.c
index 72094b6..7f27f9d 100644
--- a/sysdeps/unix/sysv/linux/futimes.c
+++ b/sysdeps/unix/sysv/linux/futimes.c
@@ -40,7 +40,7 @@  __futimes (int fd, const struct timeval tvp[2])
     {
       if (tvp[0].tv_usec < 0 || tvp[0].tv_usec >= 1000000
           || tvp[1].tv_usec < 0 || tvp[1].tv_usec >= 1000000)
-	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
       TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]);
       TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]);
diff --git a/sysdeps/unix/sysv/linux/fxstat.c b/sysdeps/unix/sysv/linux/fxstat.c
index e81dc3f..d969597 100644
--- a/sysdeps/unix/sysv/linux/fxstat.c
+++ b/sysdeps/unix/sysv/linux/fxstat.c
@@ -40,7 +40,7 @@  __fxstat (int vers, int fd, struct stat *buf)
 				  (struct kernel_stat *) buf);
 
 #ifdef STAT_IS_KERNEL_STAT
-  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 #else
   struct kernel_stat kbuf;
   INTERNAL_SYSCALL_DECL (err);
@@ -48,7 +48,7 @@  __fxstat (int vers, int fd, struct stat *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int;
   else
     return __xstat_conv (vers, &kbuf, buf);
 #endif
diff --git a/sysdeps/unix/sysv/linux/fxstat64.c b/sysdeps/unix/sysv/linux/fxstat64.c
index 97b06a8..7d90fcf 100644
--- a/sysdeps/unix/sysv/linux/fxstat64.c
+++ b/sysdeps/unix/sysv/linux/fxstat64.c
@@ -36,7 +36,7 @@  ___fxstat64 (int vers, int fd, struct stat64 *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
 #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
   if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
     buf->st_ino = buf->__st_ino;
diff --git a/sysdeps/unix/sysv/linux/fxstatat.c b/sysdeps/unix/sysv/linux/fxstatat.c
index 5259931..60d020b 100644
--- a/sysdeps/unix/sysv/linux/fxstatat.c
+++ b/sysdeps/unix/sysv/linux/fxstatat.c
@@ -48,7 +48,7 @@  __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
   else
     {
 #ifdef STAT_IS_KERNEL_STAT
diff --git a/sysdeps/unix/sysv/linux/fxstatat64.c b/sysdeps/unix/sysv/linux/fxstatat64.c
index f4cd094..5da4625 100644
--- a/sysdeps/unix/sysv/linux/fxstatat64.c
+++ b/sysdeps/unix/sysv/linux/fxstatat64.c
@@ -32,7 +32,7 @@  int
 __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
 {
   if (__glibc_unlikely (vers != _STAT_VER_LINUX))
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   int result;
   INTERNAL_SYSCALL_DECL (err);
@@ -41,7 +41,7 @@  __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
   else
     return 0;
 }
diff --git a/sysdeps/unix/sysv/linux/getpriority.c b/sysdeps/unix/sysv/linux/getpriority.c
index 444995e..4889e57 100644
--- a/sysdeps/unix/sysv/linux/getpriority.c
+++ b/sysdeps/unix/sysv/linux/getpriority.c
@@ -39,7 +39,7 @@  __getpriority (enum __priority_which which, id_t who)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (res, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (res,
 								 err),
-					int, -1);
+					int);
   else
     return PZERO - res;
 }
diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c
index 116e55b..c2b3551 100644
--- a/sysdeps/unix/sysv/linux/llseek.c
+++ b/sysdeps/unix/sysv/linux/llseek.c
@@ -37,7 +37,7 @@  __llseek (int fd, loff_t offset, int whence)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					loff_t, -1);
+					loff_t);
   else
     return retval;
 }
diff --git a/sysdeps/unix/sysv/linux/lutimes.c b/sysdeps/unix/sysv/linux/lutimes.c
index 3597c18..220ef31 100644
--- a/sysdeps/unix/sysv/linux/lutimes.c
+++ b/sysdeps/unix/sysv/linux/lutimes.c
@@ -34,7 +34,7 @@  lutimes (const char *file, const struct timeval tvp[2])
     {
       if (tvp[0].tv_usec < 0 || tvp[0].tv_usec >= 1000000
           || tvp[1].tv_usec < 0 || tvp[1].tv_usec >= 1000000)
-	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+	return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
       TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]);
       TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]);
@@ -43,7 +43,7 @@  lutimes (const char *file, const struct timeval tvp[2])
   return INLINE_SYSCALL_RETURN (utimensat, 4, int, AT_FDCWD, file,
 				tvp ? ts : NULL, AT_SYMLINK_NOFOLLOW);
 #else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 #endif
 }
 
diff --git a/sysdeps/unix/sysv/linux/lxstat.c b/sysdeps/unix/sysv/linux/lxstat.c
index 7404ecd..c133930 100644
--- a/sysdeps/unix/sysv/linux/lxstat.c
+++ b/sysdeps/unix/sysv/linux/lxstat.c
@@ -39,7 +39,7 @@  __lxstat (int vers, const char *name, struct stat *buf)
 				  (struct kernel_stat *) buf);
 
 #ifdef STAT_IS_KERNEL_STAT
-  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1)
+  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int)
 #else
   struct kernel_stat kbuf;
   INTERNAL_SYSCALL_DECL (err);
@@ -47,7 +47,7 @@  __lxstat (int vers, const char *name, struct stat *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1)
+					int)
   else
     return __xstat_conv (vers, &kbuf, buf);
 #endif
diff --git a/sysdeps/unix/sysv/linux/lxstat64.c b/sysdeps/unix/sysv/linux/lxstat64.c
index 5b4d806..8c3c076 100644
--- a/sysdeps/unix/sysv/linux/lxstat64.c
+++ b/sysdeps/unix/sysv/linux/lxstat64.c
@@ -35,7 +35,7 @@  ___lxstat64 (int vers, const char *name, struct stat64 *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
 #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
   if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
     buf->st_ino = buf->__st_ino;
diff --git a/sysdeps/unix/sysv/linux/mmap64.c b/sysdeps/unix/sysv/linux/mmap64.c
index 4dbe28b..d978da9 100644
--- a/sysdeps/unix/sysv/linux/mmap64.c
+++ b/sysdeps/unix/sysv/linux/mmap64.c
@@ -46,7 +46,7 @@  __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset)
     }
 #endif
   if (offset & ((1 << page_shift) - 1))
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, void *, MAP_FAILED);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, void *);
   return INLINE_SYSCALL_RETURN (mmap2, 6, void *, addr,
 				len, prot, flags, fd,
 				(off_t) (offset >> page_shift));
diff --git a/sysdeps/unix/sysv/linux/mq_open.c b/sysdeps/unix/sysv/linux/mq_open.c
index ecadd08..e67791a 100644
--- a/sysdeps/unix/sysv/linux/mq_open.c
+++ b/sysdeps/unix/sysv/linux/mq_open.c
@@ -35,7 +35,7 @@  mqd_t
 __mq_open (const char *name, int oflag, ...)
 {
   if (name[0] != '/')
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   mode_t mode = 0;
   struct mq_attr *attr = NULL;
diff --git a/sysdeps/unix/sysv/linux/mq_unlink.c b/sysdeps/unix/sysv/linux/mq_unlink.c
index 0b133d1..609106a 100644
--- a/sysdeps/unix/sysv/linux/mq_unlink.c
+++ b/sysdeps/unix/sysv/linux/mq_unlink.c
@@ -26,7 +26,7 @@  int
 mq_unlink (const char *name)
 {
   if (name[0] != '/')
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   INTERNAL_SYSCALL_DECL (err);
   int ret = INTERNAL_SYSCALL (mq_unlink, err, 1, name + 1);
@@ -38,7 +38,7 @@  mq_unlink (const char *name)
       ret = INTERNAL_SYSCALL_ERRNO (ret, err);
       if (ret == EPERM)
 	ret = EACCES;
-      return INLINE_SYSCALL_ERROR_RETURN (-ret, int, -1);
+      return INLINE_SYSCALL_ERROR_RETURN (-ret, int);
     }
 
   return ret;
diff --git a/sysdeps/unix/sysv/linux/prlimit.c b/sysdeps/unix/sysv/linux/prlimit.c
index ad164c4..161a9f5 100644
--- a/sysdeps/unix/sysv/linux/prlimit.c
+++ b/sysdeps/unix/sysv/linux/prlimit.c
@@ -51,7 +51,7 @@  prlimit (__pid_t pid, enum __rlimit_resource resource,
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (res, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (res,
 								 err),
-					int, -1);
+					int);
   else if (old_rlimit != NULL)
     {
       /* The prlimit64 syscall is ill-designed for 32-bit machines.
@@ -64,14 +64,14 @@  prlimit (__pid_t pid, enum __rlimit_resource resource,
       if (old_rlimit->rlim_cur != old_rlimit64_mem.rlim_cur)
 	{
 	  if (new_rlimit == NULL)
-	    return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	    return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 	  old_rlimit->rlim_cur = RLIM_INFINITY;
 	}
       old_rlimit->rlim_max = old_rlimit64_mem.rlim_max;
       if (old_rlimit->rlim_max != old_rlimit64_mem.rlim_max)
 	{
 	  if (new_rlimit == NULL)
-	    return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	    return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 	  old_rlimit->rlim_max = RLIM_INFINITY;
 	}
     }
@@ -83,7 +83,7 @@  int
 prlimit (__pid_t pid, enum __rlimit_resource resource,
 	 const struct rlimit *new_rlimit, struct rlimit *old_rlimit)
 {
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 }
 stub_warning (prlimit)
 #endif
diff --git a/sysdeps/unix/sysv/linux/readahead.c b/sysdeps/unix/sysv/linux/readahead.c
index 0c3e585..30df573 100644
--- a/sysdeps/unix/sysv/linux/readahead.c
+++ b/sysdeps/unix/sysv/linux/readahead.c
@@ -38,7 +38,7 @@  __readahead (int fd, off64_t offset, size_t count)
 ssize_t
 __readahead (int fd, off64_t offset, size_t count)
 {
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 }
 stub_warning (readahead)
 #endif
diff --git a/sysdeps/unix/sysv/linux/sched_getaffinity.c b/sysdeps/unix/sysv/linux/sched_getaffinity.c
index d66b6fa..b07a9cc 100644
--- a/sysdeps/unix/sysv/linux/sched_getaffinity.c
+++ b/sysdeps/unix/sysv/linux/sched_getaffinity.c
@@ -39,7 +39,7 @@  __sched_getaffinity_new (pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (res, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (res,
 								 err),
-					int, -1);
+					int);
   else
     {
       /* Clean the rest of the memory the kernel didn't do.  */
diff --git a/sysdeps/unix/sysv/linux/shmat.c b/sysdeps/unix/sysv/linux/shmat.c
index 45ebd11..86e38ec 100644
--- a/sysdeps/unix/sysv/linux/shmat.c
+++ b/sysdeps/unix/sysv/linux/shmat.c
@@ -45,7 +45,7 @@  shmat (shmid, shmaddr, shmflg)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (resultvar, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (resultvar,
 								 err),
-					void *, -1l);
+					void *);
   else
     return raddr;
 }
diff --git a/sysdeps/unix/sysv/linux/signalfd.c b/sysdeps/unix/sysv/linux/signalfd.c
index e07b56c..8b02800 100644
--- a/sysdeps/unix/sysv/linux/signalfd.c
+++ b/sysdeps/unix/sysv/linux/signalfd.c
@@ -45,12 +45,12 @@  signalfd (int fd, const sigset_t *mask, int flags)
      kernel (sys_indirect) before implementing setting flags like
      O_NONBLOCK etc.  */
   if (flags != 0)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
 # ifdef __NR_signalfd
   return INLINE_SYSCALL_RETURN (signalfd, 3, int, fd, mask, _NSIG / 8);
 # else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 # endif
 #elif !defined __NR_signalfd4
 # error "__ASSUME_SIGNALFD4 defined but not __NR_signalfd4"
diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c
index 2ed9f15..731711e 100644
--- a/sysdeps/unix/sysv/linux/speed.c
+++ b/sysdeps/unix/sysv/linux/speed.c
@@ -60,7 +60,7 @@  cfsetospeed  (termios_p, speed)
 {
   if ((speed & ~CBAUD) != 0
       && (speed < B57600 || speed > __MAX_BAUD))
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
 #ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
   termios_p->c_ospeed = speed;
@@ -84,7 +84,7 @@  cfsetispeed (termios_p, speed)
 {
   if ((speed & ~CBAUD) != 0
       && (speed < B57600 || speed > __MAX_BAUD))
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
 #ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
   termios_p->c_ispeed = speed;
diff --git a/sysdeps/unix/sysv/linux/tcsendbrk.c b/sysdeps/unix/sysv/linux/tcsendbrk.c
index 508efbb..4ee7ede 100644
--- a/sysdeps/unix/sysv/linux/tcsendbrk.c
+++ b/sysdeps/unix/sysv/linux/tcsendbrk.c
@@ -39,6 +39,6 @@  tcsendbreak (int fd, int duration)
   /* ioctl can't send a break of any other duration for us.
      This could be changed to use trickery (e.g. lower speed and
      send a '\0') to send the break, but for now just return an error.  */
-  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 #endif
 }
diff --git a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c
index 96f7287..9b66989 100644
--- a/sysdeps/unix/sysv/linux/tcsetattr.c
+++ b/sysdeps/unix/sysv/linux/tcsetattr.c
@@ -61,7 +61,7 @@  tcsetattr (fd, optional_actions, termios_p)
       cmd = TCSETSF;
       break;
     default:
-      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
     }
 
   k_termios.c_iflag = termios_p->c_iflag & ~IBAUD0;
diff --git a/sysdeps/unix/sysv/linux/ustat.c b/sysdeps/unix/sysv/linux/ustat.c
index 1d78c20..8cbea91 100644
--- a/sysdeps/unix/sysv/linux/ustat.c
+++ b/sysdeps/unix/sysv/linux/ustat.c
@@ -31,7 +31,7 @@  ustat (dev_t dev, struct ustat *ubuf)
   /* We must convert the value to dev_t type used by the kernel.  */
   k_dev =  dev & ((1ULL << 32) - 1);
   if (k_dev != dev)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   return INLINE_SYSCALL_RETURN (ustat, 2, int, (unsigned int) k_dev,
 				ubuf);
diff --git a/sysdeps/unix/sysv/linux/utimensat.c b/sysdeps/unix/sysv/linux/utimensat.c
index 9b645a1..f98a95a 100644
--- a/sysdeps/unix/sysv/linux/utimensat.c
+++ b/sysdeps/unix/sysv/linux/utimensat.c
@@ -30,13 +30,13 @@  utimensat (int fd, const char *file, const struct timespec tsp[2],
 	   int flags)
 {
   if (file == NULL)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 #ifdef __NR_utimensat
   /* Avoid implicit array coercion in syscall macros.  */
   return INLINE_SYSCALL_RETURN (utimensat, 4, int, fd, file, &tsp[0],
 				flags);
 #else
-  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int, -1);
+  return INLINE_SYSCALL_ERROR_RETURN (-ENOSYS, int);
 #endif
 }
 #ifndef __NR_utimensat
diff --git a/sysdeps/unix/sysv/linux/xmknod.c b/sysdeps/unix/sysv/linux/xmknod.c
index 92f714d..f3fa77b 100644
--- a/sysdeps/unix/sysv/linux/xmknod.c
+++ b/sysdeps/unix/sysv/linux/xmknod.c
@@ -33,12 +33,12 @@  __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
   unsigned long long int k_dev;
 
   if (vers != _MKNOD_VER)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   /* We must convert the value to dev_t type used by the kernel.  */
   k_dev =  (*dev) & ((1ULL << 32) - 1);
   if (k_dev != *dev)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   return INLINE_SYSCALL_RETURN (mknod, 3, int, path, mode,
 				(unsigned int) k_dev);
diff --git a/sysdeps/unix/sysv/linux/xmknodat.c b/sysdeps/unix/sysv/linux/xmknodat.c
index 04ad458..7e00cbd 100644
--- a/sysdeps/unix/sysv/linux/xmknodat.c
+++ b/sysdeps/unix/sysv/linux/xmknodat.c
@@ -34,12 +34,12 @@  int
 __xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev)
 {
   if (vers != _MKNOD_VER)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   /* We must convert the value to dev_t type used by the kernel.  */
   unsigned long long int k_dev =  (*dev) & ((1ULL << 32) - 1);
   if (k_dev != *dev)
-    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+    return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 
   return INLINE_SYSCALL_RETURN (mknodat, 4, int, fd, file, mode,
 				(unsigned int) k_dev);
diff --git a/sysdeps/unix/sysv/linux/xstat.c b/sysdeps/unix/sysv/linux/xstat.c
index 8734e0b..cfd2ce9 100644
--- a/sysdeps/unix/sysv/linux/xstat.c
+++ b/sysdeps/unix/sysv/linux/xstat.c
@@ -39,8 +39,7 @@  __xstat (int vers, const char *name, struct stat *buf)
 				  (struct kernel_stat *) buf);
 
 #ifdef STAT_IS_KERNEL_STAT
-  errno = EINVAL;
-  return -1;
+  return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
 #else
   struct kernel_stat kbuf;
   INTERNAL_SYSCALL_DECL (err);
@@ -48,7 +47,7 @@  __xstat (int vers, const char *name, struct stat *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
   else
     return __xstat_conv (vers, &kbuf, buf);
 #endif
diff --git a/sysdeps/unix/sysv/linux/xstat64.c b/sysdeps/unix/sysv/linux/xstat64.c
index 55ff8a1..394f807 100644
--- a/sysdeps/unix/sysv/linux/xstat64.c
+++ b/sysdeps/unix/sysv/linux/xstat64.c
@@ -36,7 +36,7 @@  ___xstat64 (int vers, const char *name, struct stat64 *buf)
   if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result, err)))
     return INLINE_SYSCALL_ERROR_RETURN (-INTERNAL_SYSCALL_ERRNO (result,
 								 err),
-					int, -1);
+					int);
 #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
   if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
     buf->st_ino = buf->__st_ino;
diff --git a/sysdeps/unix/sysv/linux/xstatconv.c b/sysdeps/unix/sysv/linux/xstatconv.c
index 5aae78e..e266f3a 100644
--- a/sysdeps/unix/sysv/linux/xstatconv.c
+++ b/sysdeps/unix/sysv/linux/xstatconv.c
@@ -96,7 +96,7 @@  __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
       break;
 
     default:
-      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
     }
 
   return 0;
@@ -169,7 +169,7 @@  __xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
 	 _STAT_VER_KERNEL does not make sense.  */
     case _STAT_VER_KERNEL:
     default:
-      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
     }
 
   return 0;
@@ -199,13 +199,13 @@  __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
 	    buf->st_ino = kbuf->st_ino;
 	    if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino)
 		&& buf->st_ino != kbuf->st_ino)
-	      return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	      return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 	  }
 #else
 	buf->st_ino = kbuf->st_ino;
 	if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino)
 	    && buf->st_ino != kbuf->st_ino)
-	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 #endif
 	buf->st_mode = kbuf->st_mode;
 	buf->st_nlink = kbuf->st_nlink;
@@ -219,13 +219,13 @@  __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
 	/* Check for overflow.  */
 	if (sizeof (buf->st_size) != sizeof (kbuf->st_size)
 	    && buf->st_size != kbuf->st_size)
-	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 	buf->st_blksize = kbuf->st_blksize;
 	buf->st_blocks = kbuf->st_blocks;
 	/* Check for overflow.  */
 	if (sizeof (buf->st_blocks) != sizeof (kbuf->st_blocks)
 	    && buf->st_blocks != kbuf->st_blocks)
-	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int, -1);
+	  return INLINE_SYSCALL_ERROR_RETURN (-EOVERFLOW, int);
 #ifdef _HAVE_STAT_NSEC
 	buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
 	buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
@@ -261,7 +261,7 @@  __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
 	 _STAT_VER_KERNEL does not make sense.  */
     case _STAT_VER_KERNEL:
     default:
-      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int, -1);
+      return INLINE_SYSCALL_ERROR_RETURN (-EINVAL, int);
     }
 
   return 0;
-- 
2.4.3