local-intr-msg-clobber
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Fri, 3 Jan 2025 10:56:38 +0000 (11:56 +0100)
committerAurelien Jarno <aurel32@debian.org>
Fri, 3 Jan 2025 10:56:38 +0000 (11:56 +0100)
Force putting save_data on the stack rather than in SSE register

The signal management does not yet properly save SSE state, so that save_data
would get overwritten by signal handlers, notably leading to `` shell
replacement getting empty content because then the io_read RPC retry gets an
MIG_BAD_ARGUMENTS error.

XXX: This is only temporary to fix the common shll replacement issue, and is
waiting for proper SSE state restoration.

Gbp-Pq: Topic hurd-i386
Gbp-Pq: Name local-intr-msg-clobber.diff

hurd/intr-msg.c

index 424c1fc700a7c56f346d72eddf2c3e717d8ba28f..7afd53fa9193794767384c4c9a0846612369b020 100644 (file)
@@ -67,7 +67,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
   mach_msg_bits_t msgh_bits;
   mach_port_t remote_port;
   mach_msg_id_t msgid;
-  struct clobber save_data;
+  volatile struct clobber save_data;
 
   if ((option & (MACH_SEND_MSG|MACH_RCV_MSG)) != (MACH_SEND_MSG|MACH_RCV_MSG)
       || _hurd_msgport_thread == MACH_PORT_NULL)