Hi Stepan, > 29.04.2019 в 12:46:09 +0200 Lukasz Majewski написал: > > +/* Set to zero the struct __timespec64's tv_pad. */ > > +static inline void > > +timespec64_clear_padding (const struct __timespec64 *tp) > > +{ > > + ((struct __timespec64*)tp)->tv_pad = 0; > > +} > > Modification of const values isn't going to work. This was added as a special precaution to avoid passing random data to kernel syscalls for the Y2038 support use case on 32 bit systems (where tv_nsec is 32 bit long) . As we discussed in the other thread - kernel relies on "implementation depended" behaviour from GCC (which is now to discard higher 32 bits from tv_nsec [1]). It is up to glibc community to decide if such precaution is necessary or shall we only rely on kernel (and gcc) behaviour. With this particular patch - the problem is with struct timespec's *tp pointer being const for data being passed to the kernel (to avoid creating explicit copy of struct timespec and pass it to kernel syscall). Note: [1] - kernel/time/time.c -> get_timespec64: ts->tv_nsec = kts.tv_nsec; (64 bit's kts.tv_nsec to 32 bit tv_nsec truncation). Discussion: https://patchwork.ozlabs.org/patch/1085397/ https://lkml.org/lkml/2019/4/26/600 Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de