summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2014-07-20 12:38:26 -0400
committerRich Felker <dalias@aerifal.cx>2014-07-28 00:28:01 -0400
commit90c9b5fc6054060e7e7f48a96d4883ef1e1f196f (patch)
tree95328e27ecf18744346c71c916ef5dd0ee25f482
parenta83f0e7a6b348c255064f4ad5bbb112def2850b0 (diff)
downloadmusl-90c9b5fc6054060e7e7f48a96d4883ef1e1f196f.tar.gz
fix regression that negated some mips syscall error returns
due to what was essentially a copy and paste error, the changes made in commit f61be1f875a2758509d6e9e2cf6f1d9603b28b65 caused syscalls with 5 or 6 arguments (and syscalls with 2, 3, or 4 arguments when compiled with clang compatibility) to negate the returned error code a second time, breaking errno reporting. (cherry picked from commit 1312930f9bdea47006a8a8c8509c0bed5cf69e85)
-rw-r--r--arch/mips/syscall_arch.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/mips/syscall_arch.h b/arch/mips/syscall_arch.h
index 1aa2c812..0f89a1c1 100644
--- a/arch/mips/syscall_arch.h
+++ b/arch/mips/syscall_arch.h
@@ -116,7 +116,7 @@ static inline long __syscall1(long n, long a)
static inline long __syscall2(long n, long a, long b)
{
long r2 = (__syscall)(n, a, b);
- if (r2 > -4096UL) return -r2;
+ if (r2 > -4096UL) return r2;
if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
return r2;
}
@@ -124,7 +124,7 @@ static inline long __syscall2(long n, long a, long b)
static inline long __syscall3(long n, long a, long b, long c)
{
long r2 = (__syscall)(n, a, b, c);
- if (r2 > -4096UL) return -r2;
+ if (r2 > -4096UL) return r2;
if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
return r2;
}
@@ -132,7 +132,7 @@ static inline long __syscall3(long n, long a, long b, long c)
static inline long __syscall4(long n, long a, long b, long c, long d)
{
long r2 = (__syscall)(n, a, b, c, d);
- if (r2 > -4096UL) return -r2;
+ if (r2 > -4096UL) return r2;
if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
if (n == SYS_fstatat) __stat_fix(c);
return r2;
@@ -143,7 +143,7 @@ static inline long __syscall4(long n, long a, long b, long c, long d)
static inline long __syscall5(long n, long a, long b, long c, long d, long e)
{
long r2 = (__syscall)(n, a, b, c, d, e);
- if (r2 > -4096UL) return -r2;
+ if (r2 > -4096UL) return r2;
if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
if (n == SYS_fstatat) __stat_fix(c);
return r2;
@@ -152,7 +152,7 @@ static inline long __syscall5(long n, long a, long b, long c, long d, long e)
static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
{
long r2 = (__syscall)(n, a, b, c, d, e, f);
- if (r2 > -4096UL) return -r2;
+ if (r2 > -4096UL) return r2;
if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
if (n == SYS_fstatat) __stat_fix(c);
return r2;