mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 23:58:05 +00:00
selftests/rseq: Fix: Fail thread registration when CONFIG_RSEQ=n
When linking the selftests against a libc which does not handle rseq registration (before 2.35), rseq thread registration silently succeed even with CONFIG_RSEQ=n because it erroneously thinks that libc is handling rseq registration. This is caused by setting the rseq ownership flag only after the rseq_available() check. It should rather be set before the rseq_available() check. Set the rseq_size to 0 (error value) immediately after the rseq_available() check fails rather than in the thread registration functions. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20221122203932.231377-2-mathieu.desnoyers@efficios.com
This commit is contained in:
parent
8ad075c2eb
commit
4842dadfc6
1 changed files with 4 additions and 2 deletions
|
@ -119,9 +119,11 @@ void rseq_init(void)
|
|||
rseq_flags = *libc_rseq_flags_p;
|
||||
return;
|
||||
}
|
||||
if (!rseq_available())
|
||||
return;
|
||||
rseq_ownership = 1;
|
||||
if (!rseq_available()) {
|
||||
rseq_size = 0;
|
||||
return;
|
||||
}
|
||||
rseq_offset = (void *)&__rseq_abi - rseq_thread_pointer();
|
||||
rseq_size = sizeof(struct rseq_abi);
|
||||
rseq_flags = 0;
|
||||
|
|
Loading…
Reference in a new issue