On 03/30/2010 10:51 AM, Florian Westphal wrote: > On some configurations, e.g. x86_64 with 32bit userspace, netlink/xfrm > misinterprets messages from userspace due to different structure > layout (u64 has different alignment requirements on x86 vs. x86_64). > > As long as messages are sent via sendmsg(), this could be handled via > net/compat.c; it will set the CMSG_MSG_COMPAT flag in struct msghdr > for compat tasks, which would allow to the xfrm_user code to detect > when messages need compat fixups. > > Unfortunately, some programs (e.g. pluto ike daemon), send netlink data > to the kernel using write(). > > Thus, introduce f_ops->compat_aio_write and compat_sys_write to treat > writes on sockets specially. > > This only wires up compat_sys_write for x86/x86_64 -- at the moment this > is only required to parse xfrm netlink messages, which happen to only > need special treatment in case of COMPAT_FOR_U64_ALIGNMENT=y. > > Setting CMSG_MSG_COMPAT depending on plain is_compat_task() in net/socket.c > was not done due to concerns regarding the kernel doing socket > writes in response to a user event (which might set MSG_COMPAT erronously). > OK... I have to ask the question: This only applies if you're using unpacked structures with non-naturally-aligned objects in them. Where to we have those, and can we shoot the authors? -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html