From: Andrei Vagin <avagin@google.com>
To: Kees Cook <kees@kernel.org>, Andrew Morton <akpm@linux-foundation.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Cyrill Gorcunov <gorcunov@gmail.com>,
Mike Rapoport <rppt@kernel.org>,
Alexander Mikhalitsyn <alexander@mihalicyn.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org, criu@lists.linux.dev,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Chen Ridong <chenridong@huawei.com>,
Christian Brauner <brauner@kernel.org>,
David Hildenbrand <david@kernel.org>,
Eric Biederman <ebiederm@xmission.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Michal Koutny <mkoutny@suse.com>
Subject: [PATCH 0/4 v5] exec: inherit HWCAPs from the parent process
Date: Mon, 23 Mar 2026 17:53:36 +0000 [thread overview]
Message-ID: <20260323175340.3361311-1-avagin@google.com> (raw)
This patch series introduces a mechanism to inherit hardware capabilities
(AT_HWCAP, AT_HWCAP2, etc.) from a parent process when they have been
modified via prctl.
To support C/R operations (snapshots, live migration) in heterogeneous
clusters, we must ensure that processes utilize CPU features available
on all potential target nodes. To solve this, we need to advertise a
common feature set across the cluster.
Initially, a cgroup-based approach was considered, but it was decided
that inheriting HWCAPs from a parent process that has set its own
auxiliary vector via prctl is a simpler and more flexible solution.
This implementation adds a new mm flag MMF_USER_HWCAP, which is set when the
auxiliary vector is modified via prctl(PR_SET_MM_AUXV). When execve() is
called, if the current process has MMF_USER_HWCAP set, the HWCAP values are
extracted from the current auxiliary vector and inherited by the new process.
The first patch fixes AUXV size calculation for ELF_HWCAP3 and ELF_HWCAP4
in binfmt_elf_fdpic and updates AT_VECTOR_SIZE_BASE.
The second patch implements the core inheritance logic in execve().
The third patch adds a selftest to verify that HWCAPs are correctly
inherited across execve().
v5:
- Fix reading of HWCAPs from auxiliary vectors of compat processes.
- Defer HWCAP masking until ELF table creation (create_elf_tables)
to handle compat process correctly.
- arm64: Disable HWCAP inheritance on architecture switch (e.g.,
AArch64 to AArch32) by clearing MMF_USER_HWCAP, as HWCAP bits have
completely different meanings across these architectures.
v4: minor fixes based on feedback from the previous version.
v3: synchronize saved_auxv access with arg_lock
v1: https://lkml.org/lkml/2025/12/5/65
v2: https://lkml.org/lkml/2026/1/8/219
v3: https://lkml.org/lkml/2026/2/9/1233
v4: https://lkml.org/lkml/2026/2/17/963
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Chen Ridong <chenridong@huawei.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Michal Koutny <mkoutny@suse.com>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Andrei Vagin (4):
exec: inherit HWCAPs from the parent process
arm64: elf: clear MMF_USER_HWCAP on architecture switch
mm: synchronize saved_auxv access with arg_lock
selftests/exec: add test for HWCAP inheritance
arch/arm64/include/asm/elf.h | 12 ++-
fs/binfmt_elf.c | 13 ++-
fs/binfmt_elf_fdpic.c | 13 ++-
fs/exec.c | 54 ++++++++++
fs/proc/base.c | 12 ++-
include/linux/binfmts.h | 11 ++
include/linux/mm_types.h | 3 +-
kernel/fork.c | 8 ++
kernel/sys.c | 30 +++---
tools/testing/selftests/exec/.gitignore | 1 +
tools/testing/selftests/exec/Makefile | 1 +
tools/testing/selftests/exec/hwcap_inherit.c | 105 +++++++++++++++++++
12 files changed, 234 insertions(+), 29 deletions(-)
create mode 100644 tools/testing/selftests/exec/hwcap_inherit.c
--
2.53.0.959.g497ff81fa9-goog
next reply other threads:[~2026-03-23 17:54 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-23 17:53 Andrei Vagin [this message]
2026-03-23 17:53 ` [PATCH 1/4] exec: inherit HWCAPs from the parent process Andrei Vagin
2026-03-23 18:21 ` Mark Rutland
2026-03-24 10:28 ` Will Deacon
2026-03-24 22:19 ` Andrei Vagin
2026-03-27 15:46 ` Andrei Vagin
2026-03-27 16:06 ` Mark Rutland
2026-03-28 0:21 ` Andrei Vagin
2026-04-07 15:23 ` Mark Rutland
2026-04-15 19:27 ` Andrei Vagin
2026-03-23 22:59 ` Marek Szyprowski
2026-03-23 17:53 ` [PATCH 2/4] arm64: elf: clear MMF_USER_HWCAP on architecture switch Andrei Vagin
2026-03-23 17:53 ` [PATCH 3/4] mm: synchronize saved_auxv access with arg_lock Andrei Vagin
2026-03-23 17:53 ` [PATCH 4/4] selftests/exec: add test for HWCAP inheritance Andrei Vagin
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=20260323175340.3361311-1-avagin@google.com \
--to=avagin@google.com \
--cc=akpm@linux-foundation.org \
--cc=alexander@mihalicyn.com \
--cc=brauner@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=chenridong@huawei.com \
--cc=criu@lists.linux.dev \
--cc=david@kernel.org \
--cc=ebiederm@xmission.com \
--cc=gorcunov@gmail.com \
--cc=kees@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=m.szyprowski@samsung.com \
--cc=mkoutny@suse.com \
--cc=rppt@kernel.org \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.