[PATCH] Use SYSCALL_LL[64] to pass 64-bit value [BZ #20349]

Chris Metcalf cmetcalf@mellanox.com
Wed Jul 13 16:15:00 GMT 2016


On 7/11/2016 6:06 PM, H.J. Lu wrote:
> --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
> @@ -385,4 +385,8 @@
>   # endif
>   #endif
>   
> +/* How to pass the off{64}_t argument on p{readv,writev}{64}.  */
> +#undef LO_HI_LONG
> +#define LO_HI_LONG(val) (val)
> +

But any 64-bit platform (or other ILP32 platform with 64-bit kernel API)
that uses the consolidated preadv/pwritev will still have the bug you have
fixed for x86.

I suspect Adhermerval's commit 468700675f7f ("Fix LO_HI_LONG definition")
may not have been the patch he intended, since his commit comment says:

     GLIBC already defines a macro for such cases (__OFF_T_MATCHES_OFF64_T),
     so this patch uses it instead.

but the actual code does not use __OFF_T_MATCHES_OFF64_T.  I suspect
that we actually want what his commit comment implied.

-- 
Chris Metcalf, Mellanox Technologies
http://www.mellanox.com



More information about the Libc-alpha mailing list