[PATCH v4 0/2] arm64: Implement getrandom() in vDSO

Adhemerval Zanella posted 2 patches 1 year, 3 months ago
There is a newer version of this series
arch/arm64/Kconfig                          |   1 +
arch/arm64/include/asm/alternative-macros.h |   4 +
arch/arm64/include/asm/mman.h               |   6 +-
arch/arm64/include/asm/vdso.h               |   6 +
arch/arm64/include/asm/vdso/getrandom.h     |  50 ++++++
arch/arm64/include/asm/vdso/vsyscall.h      |  10 ++
arch/arm64/kernel/vdso.c                    |   6 -
arch/arm64/kernel/vdso/Makefile             |  25 ++-
arch/arm64/kernel/vdso/vdso                 |   1 +
arch/arm64/kernel/vdso/vdso.lds.S           |   4 +
arch/arm64/kernel/vdso/vgetrandom-chacha.S  | 178 ++++++++++++++++++++
arch/arm64/kernel/vdso/vgetrandom.c         |  15 ++
tools/arch/arm64/vdso                       |   1 +
tools/include/linux/compiler.h              |   4 +
tools/testing/selftests/vDSO/Makefile       |   3 +-
15 files changed, 298 insertions(+), 16 deletions(-)
create mode 100644 arch/arm64/include/asm/vdso/getrandom.h
create mode 120000 arch/arm64/kernel/vdso/vdso
create mode 100644 arch/arm64/kernel/vdso/vgetrandom-chacha.S
create mode 100644 arch/arm64/kernel/vdso/vgetrandom.c
create mode 120000 tools/arch/arm64/vdso
[PATCH v4 0/2] arm64: Implement getrandom() in vDSO
Posted by Adhemerval Zanella 1 year, 3 months ago
Implement stack-less ChaCha20 and wire it with the generic vDSO
getrandom code.  The first patch is Mark's fix to the alternatives
system in the vDSO, while the the second is the actual vDSO work.

Changes from v3:
- Use alternative_has_cap_likely instead of ALTERNATIVE.

Changes from v2:
- Refactor Makefile to use same flags for vgettimeofday and
  vgetrandom.
- Removed rodata usage and fixed BE on vgetrandom-chacha.S.

Changes from v1:
- Fixed style issues and typos.
- Added fallback for systems without NEON support.
- Avoid use of non-volatile vector registers in neon chacha20.
- Use c-getrandom-y for vgetrandom.c.
- Fixed TIMENS vdso_rnd_data access.

Adhemerval Zanella (1):
  arm64: vdso: wire up getrandom() vDSO implementation

Mark Rutland (1):
  arm64: alternative: make alternative_has_cap_likely() VDSO compatible

 arch/arm64/Kconfig                          |   1 +
 arch/arm64/include/asm/alternative-macros.h |   4 +
 arch/arm64/include/asm/mman.h               |   6 +-
 arch/arm64/include/asm/vdso.h               |   6 +
 arch/arm64/include/asm/vdso/getrandom.h     |  50 ++++++
 arch/arm64/include/asm/vdso/vsyscall.h      |  10 ++
 arch/arm64/kernel/vdso.c                    |   6 -
 arch/arm64/kernel/vdso/Makefile             |  25 ++-
 arch/arm64/kernel/vdso/vdso                 |   1 +
 arch/arm64/kernel/vdso/vdso.lds.S           |   4 +
 arch/arm64/kernel/vdso/vgetrandom-chacha.S  | 178 ++++++++++++++++++++
 arch/arm64/kernel/vdso/vgetrandom.c         |  15 ++
 tools/arch/arm64/vdso                       |   1 +
 tools/include/linux/compiler.h              |   4 +
 tools/testing/selftests/vDSO/Makefile       |   3 +-
 15 files changed, 298 insertions(+), 16 deletions(-)
 create mode 100644 arch/arm64/include/asm/vdso/getrandom.h
 create mode 120000 arch/arm64/kernel/vdso/vdso
 create mode 100644 arch/arm64/kernel/vdso/vgetrandom-chacha.S
 create mode 100644 arch/arm64/kernel/vdso/vgetrandom.c
 create mode 120000 tools/arch/arm64/vdso

-- 
2.43.0
Re: [PATCH v4 0/2] arm64: Implement getrandom() in vDSO
Posted by Jason A. Donenfeld 1 year, 3 months ago
On Mon, Sep 02, 2024 at 04:15:45PM +0000, Adhemerval Zanella wrote:
> Implement stack-less ChaCha20 and wire it with the generic vDSO
> getrandom code.  The first patch is Mark's fix to the alternatives
> system in the vDSO, while the the second is the actual vDSO work.
> 
> Changes from v3:
> - Use alternative_has_cap_likely instead of ALTERNATIVE.

It also has the discussed header/include and comment fixups.

But anyway, this series of two looks fine to me, and I'll gladly queue
it up, pending Will/Catalin's ack on it.

Thanks for working on this.

Jason