60 lines
2.2 KiB
Diff
60 lines
2.2 KiB
Diff
commit 4b527650e0d559a5f693275c598667e06cd6455c
|
|
Author: Florian Weimer <fweimer@redhat.com>
|
|
Date: Thu Jun 2 16:29:55 2022 +0200
|
|
|
|
Linux: Adjust struct rseq definition to current kernel version
|
|
|
|
This definition is only used as a fallback with old kernel headers.
|
|
The change follows kernel commit bfdf4e6208051ed7165b2e92035b4bf11
|
|
("rseq: Remove broken uapi field layout on 32-bit little endian").
|
|
|
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
|
|
|
diff --git a/sysdeps/unix/sysv/linux/sys/rseq.h b/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
index 791ed83176b61fe4..56550329db962cc8 100644
|
|
--- a/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
+++ b/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
@@ -24,7 +24,6 @@
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <sys/cdefs.h>
|
|
-#include <bits/endian.h>
|
|
|
|
#ifdef __has_include
|
|
# if __has_include ("linux/rseq.h")
|
|
@@ -129,28 +128,13 @@ struct rseq
|
|
targeted by the rseq_cs. Also needs to be set to NULL by user-space
|
|
before reclaiming memory that contains the targeted struct rseq_cs.
|
|
|
|
- Read and set by the kernel. Set by user-space with single-copy
|
|
- atomicity semantics. This field should only be updated by the
|
|
- thread which registered this data structure. Aligned on 64-bit. */
|
|
- union
|
|
- {
|
|
- uint64_t ptr64;
|
|
-# ifdef __LP64__
|
|
- uint64_t ptr;
|
|
-# else /* __LP64__ */
|
|
- struct
|
|
- {
|
|
-#if __BYTE_ORDER == __BIG_ENDIAN
|
|
- uint32_t padding; /* Initialized to zero. */
|
|
- uint32_t ptr32;
|
|
-# else /* LITTLE */
|
|
- uint32_t ptr32;
|
|
- uint32_t padding; /* Initialized to zero. */
|
|
-# endif /* ENDIAN */
|
|
- } ptr;
|
|
-# endif /* __LP64__ */
|
|
- } rseq_cs;
|
|
+ Read and set by the kernel. Set by user-space with single-copy
|
|
+ atomicity semantics. This field should only be updated by the
|
|
+ thread which registered this data structure. Aligned on 64-bit.
|
|
|
|
+ 32-bit architectures should update the low order bits of the
|
|
+ rseq_cs field, leaving the high order bits initialized to 0. */
|
|
+ uint64_t rseq_cs;
|
|
/* Restartable sequences flags field.
|
|
|
|
This field should only be updated by the thread which
|