From: "Thomas Weißschuh" <linux@weissschuh.net>
To: Tiwei Bie <tiwei.bie@linux.dev>
Cc: richard@nod.at, anton.ivanov@cambridgegreys.com,
johannes@sipsolutions.net, benjamin@sipsolutions.net,
arnd@arndb.de, linux-um@lists.infradead.org,
linux-kernel@vger.kernel.org, tiwei.btw@antgroup.com
Subject: Re: [PATCH v2 03/10] um: vdso: Implement __vdso_getcpu() via syscall
Date: Mon, 22 Sep 2025 14:05:34 +0200 [thread overview]
Message-ID: <495a5594-8ac6-4b7d-be6b-7c176b741c21@t-8ch.de> (raw)
In-Reply-To: <20250922045020.48158-1-tiwei.bie@linux.dev>
On 2025-09-22 12:50:20+0800, Tiwei Bie wrote:
> On Sun, 21 Sep 2025 22:00:41 +0200, Thomas Weißschuh wrote:
> > On 2025-09-10 13:59:02+0200, Johannes Berg wrote:
> > > On Sun, 2025-08-10 at 13:51 +0800, Tiwei Bie wrote:
> > > > From: Tiwei Bie <tiwei.btw@antgroup.com>
> > > >
> > > > We are going to support SMP in UML, so we can not hard code
> > > > the CPU and NUMA node in __vdso_getcpu() anymore.
> > >
> > > Correct. But does that mean we actually have to implement it via syscall
> > > in the VDSO? That seems a bit odd? ARM doesn't seem to have getcpu in
> > > the VDSO at all, for example, so could we do the same and just remove
> > > it?
> >
> > It is my understanding that the UM VDSO exists to cope with old versions
> > of glibc which would fall back to the old vsyscall mechanism if no VDSO
> > was present. That could fall through to the host kernels vsyscalls.
> > See commit f1c2bb8b9964 ("um: implement a x86_64 vDSO").
> >
> > If this is not necessary anymore, the whole VDSO on UM can probably go
> > away.
>
> The vsyscall usage was removed from glibc a decade ago:
>
> https://sourceware.org/git/?p=glibc.git;a=commit;h=7cbeabac0fb28e24c99aaa5085e613ea543a2346
>
> "This patch removes the vsyscall usage for x86_64 port. As indicated
> by kernel code comments [1], vsyscalls are a legacy ABI and its concept
> is problematic:
>
> - It interferes with ASLR.
> - It's awkward to write code that lives in kernel addresses but is
> callable by userspace at fixed addresses.
> - The whole concept is impossible for 32-bit compat userspace.
> - UML cannot easily virtualize a vsyscall.
>
> ......"
Also modern kernels dont even implement the vsyscall page anymore.
At most it is implemented as a stub which will trigger the real syscall
which then gets handled properly.
> The original issue could now be considered resolved. So in v3, we no
> longer turn __vdso_getcpu into a syscall wrapper; we simply removed it.
> Perhaps we could remove the whole VDSO before we implement the "real"
> VDSO. However, its implementation is clean, so keeping it wouldn't hurt
> and it could serve as a useful starting point for the "real" VDSO.
A "real" vDSO would require quite some more infrastructure. And it is
not even clear if such a vDSO will make a difference on UML. In my
opinion if __vdso_getcpu() gets removed, the whole vDSO should go with
it. The code can still be easily restored from git.
Also the functionality to map the host vDSO and vsyscall page into UML
userspace looks very weird and error-prone. Maybe it can also go away.
Thomas
next prev parent reply other threads:[~2025-09-22 12:05 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-10 5:51 [PATCH v2 00/10] um: Add SMP support Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 01/10] um: Stop tracking virtual CPUs via mm_cpumask() Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 02/10] um: Remove unused cpu_data and current_cpu_data macros Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 03/10] um: vdso: Implement __vdso_getcpu() via syscall Tiwei Bie
2025-09-10 11:59 ` Johannes Berg
2025-09-11 4:29 ` Tiwei Bie
2025-09-21 20:00 ` Thomas Weißschuh
2025-09-22 4:50 ` Tiwei Bie
2025-09-22 12:05 ` Thomas Weißschuh [this message]
2025-09-22 12:12 ` Johannes Berg
2025-09-22 14:01 ` Thomas Weißschuh
2025-09-22 15:14 ` Johannes Berg
2025-09-22 16:04 ` Thomas Weißschuh
2025-09-22 17:07 ` Johannes Berg
2025-09-25 17:08 ` Thomas Weißschuh
2025-10-21 13:20 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 04/10] um: Turn signals_* into thread-local variables Tiwei Bie
2025-09-10 12:15 ` Johannes Berg
2025-09-11 4:34 ` Tiwei Bie
2025-09-11 7:37 ` Benjamin Berg
2025-09-11 8:06 ` Benjamin Berg
2025-09-12 0:30 ` Tiwei Bie
2025-09-12 7:58 ` Benjamin Berg
2025-09-12 13:27 ` Tiwei Bie
2025-09-11 9:44 ` Johannes Berg
2025-09-11 10:35 ` Benjamin Berg
2025-08-10 5:51 ` [PATCH v2 05/10] um: Determine sleep based on need_resched() Tiwei Bie
2025-09-10 12:10 ` Johannes Berg
2025-09-11 4:39 ` Tiwei Bie
2025-09-11 6:59 ` Johannes Berg
2025-09-12 0:59 ` Tiwei Bie
2025-09-11 9:27 ` Johannes Berg
2025-09-12 0:54 ` Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 06/10] um: Define timers on a per-CPU basis Tiwei Bie
2025-08-10 9:49 ` kernel test robot
2025-08-10 5:51 ` [PATCH v2 07/10] um: Remove unused ipi_pipe field from cpuinfo_um Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 08/10] um: Add initial SMP support Tiwei Bie
2025-09-11 9:32 ` Johannes Berg
2025-09-12 0:45 ` Tiwei Bie
2025-09-12 7:58 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 09/10] asm-generic: percpu: Add assembly guard Tiwei Bie
2025-09-10 12:12 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 10/10] um: Enable SMP support on x86 Tiwei Bie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=495a5594-8ac6-4b7d-be6b-7c176b741c21@t-8ch.de \
--to=linux@weissschuh.net \
--cc=anton.ivanov@cambridgegreys.com \
--cc=arnd@arndb.de \
--cc=benjamin@sipsolutions.net \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=richard@nod.at \
--cc=tiwei.bie@linux.dev \
--cc=tiwei.btw@antgroup.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).