Use of __kernel_timespec in userspace genetlink API

Matt Layher mdlayher at
Thu Apr 18 16:06:17 CEST 2019

Hey all,

I recently received a bug report for which indicated that the 
timespec structure being returned from the WireGuard genetlink API was 
not of the expected size on a 32-bit machine.

It then occurred to us that the userspace-facing API is returning a 
"__kernel_timespec"; something I did not realize before:

My C experience is very limited, and I have no experience working on C 
within the kernel, but is exposing a "__kernel*" type to userspace a 
normal procedure? I would have expected to see a regular timespec from 
linux/time.h, or perhaps a timespec64 in its place.

I can do some slightly more intelligent checking to fix the current 
issue with my library, but I wanted to check in and confirm that this 
API contract is correct.

Thanks for your time!
- Matt Layher

More information about the WireGuard mailing list