aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2024-07-13 17:00:55 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-07-13 17:05:13 +0200
commitc8b4ce0b368115714bd4cce131e1683759471099 (patch)
tree22f1ba6eb120e7ed51d7507bfa979bd95dae6dee
parent4b2a1b602fc1ade0de85084feb328203be3147c9 (diff)
downloadglibc-c8b4ce0b368115714bd4cce131e1683759471099.zip
glibc-c8b4ce0b368115714bd4cce131e1683759471099.tar.gz
glibc-c8b4ce0b368115714bd4cce131e1683759471099.tar.bz2
hurd: Fix restoring message to be retried
save_data stores the start of the original message to be retried, overwritten by the EINTR reply. In 64b builds the overwrite is however rounded up to the 64b pointer size, so we have to save more than just the 32b err. Thanks a lot to Luca Dariz for the investigation!
-rw-r--r--hurd/intr-msg.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
index 2c2e7dc..424c1fc 100644
--- a/hurd/intr-msg.c
+++ b/hurd/intr-msg.c
@@ -42,7 +42,10 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
struct clobber
{
mach_msg_type_t type;
- error_t err;
+ union {
+ error_t err;
+ uintptr_t align;
+ };
};
union msg
{