Re: [PATCH v3 00/23] Add generic vdso_base tracking

From: Christophe Leroy
Date: Wed Mar 09 2022 - 10:41:37 EST


Hi Dmitry,

I'm wondering the status of this series.

Wondering what to do while reviewing pending powerpc patches and especially https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20201103171336.98883-1-ldufour@xxxxxxxxxxxxx/

Christophe

Le 11/06/2021 à 20:02, Dmitry Safonov a écrit :
v3 Changes:
- Migrated arch/powerpc to vdso_base
- Added x86/selftest for unmapped vdso & no landing on fast syscall
- Review comments from Andy & Christophe (thanks!)
- Amended s/born process/execed process/ everywhere I noticed
- Build robot warning on cast from __user pointer

I've tested it on x86, I would appreciate any help with
Tested-by on arm/arm64/mips/powerpc/s390/... platforms.

One thing I've noticed while cooking this and haven't found a clean
way to solve is zero-terminated .pages[] array in vdso mappings, which
is not always zero-terminated but works by the reason of
VM_DONTEXPAND on mappings.

v2 Changes:
- Rename user_landing to vdso_base as it tracks vDSO VMA start address,
rather than the explicit address to land (Andy)
- Reword and don't use "new-execed" and "new-born" task (Andy)
- Fix failures reported by build robot

Started from discussion [1], where was noted that currently a couple of
architectures support mremap() for vdso/sigpage, but not munmap().
If an application maps something on the ex-place of vdso/sigpage,
later after processing signal it will land there (good luck!)

Patches set is based on linux-next (next-20201123) and it depends on
changes in x86/cleanups (those reclaim TIF_IA32/TIF_X32) and also
on my changes in akpm (fixing several mremap() issues).

Logically, the patches set divides on:
- patch 1: a cleanup for patches in x86/cleanups
- patches 2-13: cleanups for arch_setup_additional_pages()
- patches 13-14: x86 signal changes for unmapped vdso
- patches 15-22: provide generic vdso_base in mm_struct
- patch 23: selftest for unmapped vDSO & fast syscalls

In the end, besides cleanups, it's now more predictable what happens for
applications with unmapped vdso on architectures those support .mremap()
for vdso/sigpage.

I'm aware of only one user that unmaps vdso - Valgrind [2].
(there possibly are more, but this one is "special", it unmaps vdso, but
not vvar, which confuses CRIU [Checkpoint Restore In Userspace], that's
why I'm aware of it)


I'm wondering the status of this series.

Wondering what to do while reviewing pending powerpc patches and especially https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20201103171336.98883-1-ldufour@xxxxxxxxxxxxx/

Christophe