selftests/rseq: Remove volatile from __rseq_abi
commit 94b80a19ebfe347a01301d750040a61c38200e2b upstream. This is done in preparation for the selftest uplift to become compatible with glibc-2.35. All accesses to the __rseq_abi fields are volatile, but remove the volatile from the TLS variable declaration, otherwise we are stuck with volatile for the upcoming rseq_get_abi() helper. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20220124171253.22072-5-mathieu.desnoyers@efficios.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
68e1232c6e
commit
3c2a416c80
@@ -30,7 +30,7 @@
|
|||||||
#include "../kselftest.h"
|
#include "../kselftest.h"
|
||||||
#include "rseq.h"
|
#include "rseq.h"
|
||||||
|
|
||||||
__thread volatile struct rseq_abi __rseq_abi = {
|
__thread struct rseq_abi __rseq_abi = {
|
||||||
.cpu_id = RSEQ_ABI_CPU_ID_UNINITIALIZED,
|
.cpu_id = RSEQ_ABI_CPU_ID_UNINITIALIZED,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ int rseq_register_current_thread(void)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (errno != EBUSY)
|
if (errno != EBUSY)
|
||||||
__rseq_abi.cpu_id = RSEQ_ABI_CPU_ID_REGISTRATION_FAILED;
|
RSEQ_WRITE_ONCE(__rseq_abi.cpu_id, RSEQ_ABI_CPU_ID_REGISTRATION_FAILED);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
__rseq_refcount--;
|
__rseq_refcount--;
|
||||||
end:
|
end:
|
||||||
|
@@ -43,7 +43,7 @@
|
|||||||
#define RSEQ_INJECT_FAILED
|
#define RSEQ_INJECT_FAILED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern __thread volatile struct rseq_abi __rseq_abi;
|
extern __thread struct rseq_abi __rseq_abi;
|
||||||
extern int __rseq_handled;
|
extern int __rseq_handled;
|
||||||
|
|
||||||
#define rseq_likely(x) __builtin_expect(!!(x), 1)
|
#define rseq_likely(x) __builtin_expect(!!(x), 1)
|
||||||
@@ -139,7 +139,7 @@ static inline uint32_t rseq_current_cpu(void)
|
|||||||
|
|
||||||
static inline void rseq_clear_rseq_cs(void)
|
static inline void rseq_clear_rseq_cs(void)
|
||||||
{
|
{
|
||||||
__rseq_abi.rseq_cs.arch.ptr = 0;
|
RSEQ_WRITE_ONCE(__rseq_abi.rseq_cs.arch.ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user