According to the O'Reilly Linux Device Drivers book, the ioctl related callback function (used on the kernel module side) which is part of the file_operations struct is defined as:
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
with the last argument being a pointer. Since it's an unsigned long does that mean that ioctl communications use 32 bit pointers? How does this not cause issues when compiled as a 64 bit kernel module?