Hi, On Mon, Dec 5, 2011 at 10:37 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote: > On Sunday 04 December 2011, Ming Lei wrote: >> > >> > This data structure is not 32/64 bit safe: running a 64 bit kernel with 32 bit >> > user space will see an incompatible layout. >> >> I agree that this is not 32/64 bit safe, but I understand lib32 can handle >> this correctly, otherwise many 32bit applications can't run on current >> 64bit kernel >> since many kernel structures used by user space contained pointer, >> such as struct v4l2_buffer, struct v4l2_ext_controls in v4l2 ABI. > > The other ones you mentioned are handled in the kernel in > drivers/media/video/v4l2-compat-ioctl32.c. For new ioctl commands, > it's better to define the data structure in a compatible way > so you do not need a wrapper like that. OK, I opt to use __u64 to pass the user pointer, so how about the blow changes on this patch? diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 073eb4d..8aeaa1e 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -2214,7 +2214,12 @@ struct v4l2_fd_result { __u32 buf_index; __u32 face_cnt; __u32 reserved[6]; - struct v4l2_fd_detection *fd; + + /*make 64/32 compatible*/ + union { + struct v4l2_fd_detection *fd; + __u64 dummy; + }; }; /** thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html