From: GNU Libc Maintainers Date: Sun, 13 Apr 2025 19:40:49 +0000 (+0200) Subject: local-intr-msg-clobber X-Git-Tag: archive/raspbian/2.41-8+rpi1^2^2~46 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=dade3fdc3f9075d6236f9d2109c3066463fd14eb;p=glibc.git local-intr-msg-clobber 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 --- diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c index 1c2fe3f20..4db9be222 100644 --- a/hurd/intr-msg.c +++ b/hurd/intr-msg.c @@ -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)