[PATCH v5 3/3] Linux: Only generate 64 bit timestamps for 64 bit time_t recvmsg/recvmmsg
Florian Weimer
fweimer@redhat.com
Fri Jan 28 14:02:12 GMT 2022
* Adhemerval Zanella:
> diff --git a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
> +/* Check if recvmsg create the additional 64 bit timestamp if only 32 bit
> + is enabled for 64 bit recvmsg symbol. */
> +static void
> +do_test_large_buffer (bool mc)
> +{
> + struct mmsghdr mmhdr = { 0 };
> + /* It should be large enought for either timeval/timespec and the
> + 64 time type as well. */
> + char msgbuf[512];
I think this needs a union with struct cmsgbuf to ensure alignment.
Alternatively, use malloc.
> +static void
> +do_test_small_buffer (bool mc)
> +{
> + struct mmsghdr mmhdr = { 0 };
> +
> + /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp
> + is created. */
> + {
> + char msgbuf[CMSG_SPACE (sizeof (struct timeval))];
Likewise.
Rest looks okay. The kernel does not pass on whether a time32 or time64
system call was used, so implementing time32 recvmsg with recvmsg_time64
is fine in that regard.
Thanks,
Florian
More information about the Libc-alpha
mailing list