FWIW i had something similar using the gcc union extension at some
point for ioctls because I was tired for all the ugly casts from
unsigned long arg to void * in ioctl handlers.
But I decided to not push it because sparse would have likely choked
on it, and sparse actually finds a lot of bugs so it's more important than
having a few more casts.
-Andi
--