void-packages/srcpkgs/qemu/patches/musl-fix-sigevent-and-sigval_t.patch
Ismael Luceno dbe9b644ba qemu: Fix padding in host_sigevent
The struct should be padded to 64 bytes but instead it was padded to
(sizeof(int) * (64 - 2 * sizeof(int) + sizeof(union sigval))).

Assuming both int and pointer types are 64 bits, that leads to a padding
of 448 bytes.
2021-09-19 21:53:20 -03:00

26 lines
764 B
Diff

Note: Remove this patch with musl 1.2.2
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5020,9 +5020,20 @@
return 0;
}
-static inline abi_long target_to_host_sigevent(struct sigevent *host_sevp,
+struct host_sigevent {
+ union sigval sigev_value;
+ int sigev_signo;
+ int sigev_notify;
+ union {
+ char _pad[64 - sizeof(int) * 2 - sizeof(union sigval)];
+ int _tid;
+ } _sigev_un;
+};
+
+static inline abi_long target_to_host_sigevent(struct sigevent *sevp,
abi_ulong target_addr)
{
+ struct host_sigevent *host_sevp = (struct host_sigevent *) sevp;
struct target_sigevent *target_sevp;
if (!lock_user_struct(VERIFY_READ, target_sevp, target_addr, 1)) {