|
Message-ID: <20220801175008.GP7074@brightrain.aerifal.cx> Date: Mon, 1 Aug 2022 13:50:09 -0400 From: Rich Felker <dalias@...c.org> To: "Alex Xu (Hello71)" <alex_y_xu@...oo.ca> Cc: musl@...ts.openwall.com Subject: Re: [PATCH] use __scc and unsigned long for socketcall On Fri, Jul 01, 2022 at 11:09:10AM -0400, Alex Xu (Hello71) wrote: > otherwise, pointer arguments are sign-extended on x32, resulting in > EFAULT. > --- > src/internal/syscall.h | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/src/internal/syscall.h b/src/internal/syscall.h > index 4f41e1dc..7c74775c 100644 > --- a/src/internal/syscall.h > +++ b/src/internal/syscall.h > @@ -58,22 +58,22 @@ hidden long __syscall_ret(unsigned long), > #define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) > #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) > > -static inline long __alt_socketcall(int sys, int sock, int cp, long a, long b, long c, long d, long e, long f) > +static inline long __alt_socketcall(int sys, int sock, int cp, syscall_arg_t a, syscall_arg_t b, syscall_arg_t c, syscall_arg_t d, syscall_arg_t e, syscall_arg_t f) > { OK. > long r; > if (cp) r = __syscall_cp(sys, a, b, c, d, e, f); > else r = __syscall(sys, a, b, c, d, e, f); > if (r != -ENOSYS) return r; > #ifdef SYS_socketcall > - if (cp) r = __syscall_cp(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f})); > - else r = __syscall(SYS_socketcall, sock, ((long[6]){a, b, c, d, e, f})); > + if (cp) r = __syscall_cp(SYS_socketcall, sock, ((unsigned long[6]){a, b, c, d, e, f})); > + else r = __syscall(SYS_socketcall, sock, ((unsigned long[6]){a, b, c, d, e, f})); > #endif > return r; Does this part have any functional change or purpose? I'm not seeing it. > } > #define __socketcall(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 0, \ > - (long)(a), (long)(b), (long)(c), (long)(d), (long)(e), (long)(f)) > + __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f)) > #define __socketcall_cp(nm, a, b, c, d, e, f) __alt_socketcall(SYS_##nm, __SC_##nm, 1, \ > - (long)(a), (long)(b), (long)(c), (long)(d), (long)(e), (long)(f)) > + __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f)) > > /* fixup legacy 16-bit junk */ Looks good. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.