On 9/7/17 12:29 AM, Maxim Sobolev wrote: > Author: sobomax > Date: Thu Sep 7 04:29:57 2017 > New Revision: 323254 > URL: https://svnweb.freebsd.org/changeset/base/323254 > > Log: > In the recvmsg32() system call iterate over returned structure(s) > and convert any messages of types SCM_BINTIME, SCM_TIMESTAMP, > SCM_REALTIME and SCM_MONOTONIC from 64-bit to its 32-bit > representation. Otherwise we either run out of user-supplied > buffer to copy those out resulting in the MSG_CTRUNC or simply > return values that the userland 32-bit code is not going > to parse correctly. This fixes at least two regression tests > failing to function properly in 32-bit compat mode: > > tools/regression/sockets/udp_pingpong > tools/regression/sockets/unix_cmsg > > PR: kern/222039 > MFC after: 30 days
Is this correct on !amd64? Other 32-bit platforms use a 64-bit time_t (note the time32_t type defined earlier in freebsd32.h). struct bintime32 should use time32_t for the seconds field, not uint32_t. I think that will be sufficient to make this correct on !amd64 (it also means that bintime32 == bintime on !amd64 so you could perhaps use a simpler BT_CP for !amd64, but the existing one is probably ok). -- John Baldwin _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "[email protected]"
