From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 3D7F13858CDA; Fri, 15 Mar 2024 18:08:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3D7F13858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1710526121; bh=h+TCTW5EAEaG3jdhKFOJQ/KPJbI0GuKh2hqsB6sVFkE=; h=From:To:Subject:Date:From; b=BLEehxsirjo+gEu7FERBw8YX4lqPJ5C0Mcn2sydhM2qM7BrhyhReY7DtYgSPudtUP oWRT2m6NlJqUX3oRfGnD9//B7nTunZioIGbc4M1V3VaAL6xIUtuUklofQs+B7h+y/a J6/tu13u+rh206Win1ulPMART1Y6PZRy0vuuCrSA= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Florian Weimer To: glibc-cvs@sourceware.org Subject: [glibc] linux: Use rseq area unconditionally in sched_getcpu (bug 31479) X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/master X-Git-Oldrev: 73c26018ed0ecd9c807bb363cc2c2ab4aca66a82 X-Git-Newrev: 7a76f218677d149d8b7875b336722108239f7ee9 Message-Id: <20240315180841.3D7F13858CDA@sourceware.org> Date: Fri, 15 Mar 2024 18:08:41 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7a76f218677d149d8b7875b336722108239f7ee9 commit 7a76f218677d149d8b7875b336722108239f7ee9 Author: Florian Weimer Date: Fri Mar 15 19:08:24 2024 +0100 linux: Use rseq area unconditionally in sched_getcpu (bug 31479) Originally, nptl/descr.h included , but we removed that in commit 2c6b4b272e6b4d07303af25709051c3e96288f2d ("nptl: Unconditionally use a 32-byte rseq area"). After that, it was not ensured that the RSEQ_SIG macro was defined during sched_getcpu.c compilation that provided a definition. This commit always checks the rseq area for CPU number information before using the other approaches. This adds an unnecessary (but well-predictable) branch on architectures which do not define RSEQ_SIG, but its cost is small compared to the system call. Most architectures that have vDSO acceleration for getcpu also have rseq support. Fixes: 2c6b4b272e6b4d07303af25709051c3e96288f2d Fixes: 1d350aa06091211863e41169729cee1bca39f72f Reviewed-by: Arjun Shankar Diff: --- sysdeps/unix/sysv/linux/sched_getcpu.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sysdeps/unix/sysv/linux/sched_getcpu.c b/sysdeps/unix/sysv/linux/sched_getcpu.c index dfb884568d..72a3360550 100644 --- a/sysdeps/unix/sysv/linux/sched_getcpu.c +++ b/sysdeps/unix/sysv/linux/sched_getcpu.c @@ -33,17 +33,9 @@ vsyscall_sched_getcpu (void) return r == -1 ? r : cpu; } -#ifdef RSEQ_SIG int sched_getcpu (void) { int cpu_id = THREAD_GETMEM_VOLATILE (THREAD_SELF, rseq_area.cpu_id); return __glibc_likely (cpu_id >= 0) ? cpu_id : vsyscall_sched_getcpu (); } -#else /* RSEQ_SIG */ -int -sched_getcpu (void) -{ - return vsyscall_sched_getcpu (); -} -#endif /* RSEQ_SIG */