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