mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08: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
@ -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 New Issue
Block a user