memcpy(p, abs_timeout, sizeof(struct timespec));
memcpy(p, abs_timeout, sizeof(struct timespec64));Since you're changing this line, how about changing it to the following:
memcpy(p, abs_timeout, sizeof(*p));
else
memset(p, 0, sizeof(struct timespec));
memset(p, 0, sizeof(struct timespec64));Same here.
Sure, that seems fine to me. I will post an update.
-Deepa