You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.2 KiB
59 lines
2.2 KiB
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
|
|
|