From: GNU Libc Maintainers Date: Fri, 3 Jan 2025 10:56:38 +0000 (+0100) Subject: local-intr-msg-clobber X-Git-Tag: archive/raspbian/2.40-5+rpi1^2~60 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=207416afae9dcf9798369b358aa3e9db534a973b;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 424c1fc70..7afd53fa9 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)