From 573a4d2d597ba15435ffdf0f2d8bea1058e7b795 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 31 Oct 2019 22:55:39 -0400 Subject: [PATCH] fix x32 msghdr struct by removing x32 bits/socket.h being that it contains pointers and (from the kernel perspective, which is wrong) size_t members, x32 uses the 32-bit version of the structure, not a half-32-bit, half-64-bit layout like we had here. the x86_64 definition was inadvertently copied when x32 was first added. unlike errors in the opposite direction (missing padding), this error was not easily detected breakage, because the layout of the commonly used initial subset of members still matched. breakage could only be observed in the presence of control messages or flags. --- arch/x32/bits/socket.h | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 arch/x32/bits/socket.h diff --git a/arch/x32/bits/socket.h b/arch/x32/bits/socket.h deleted file mode 100644 index a4c89f3d..00000000 --- a/arch/x32/bits/socket.h +++ /dev/null @@ -1,16 +0,0 @@ -struct msghdr { - void *msg_name; - socklen_t msg_namelen; - struct iovec *msg_iov; - int msg_iovlen, __pad1; - void *msg_control; - socklen_t msg_controllen, __pad2; - int msg_flags; -}; - -struct cmsghdr { - socklen_t cmsg_len; - int __pad1; - int cmsg_level; - int cmsg_type; -}; -- 2.25.1