From: Kees Cook <kees@kernel.org>
To: jeffxu@chromium.org
Cc: akpm@linux-foundation.org, jannh@google.com,
torvalds@linux-foundation.org, vbabka@suse.cz,
lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com,
adhemerval.zanella@linaro.org, oleg@redhat.com, avagin@gmail.com,
benjamin@sipsolutions.net, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org, linux-mm@kvack.org,
linux-kselftest@vger.kernel.org, jorgelo@chromium.org,
sroettger@google.com, hch@lst.de, ojeda@kernel.org,
thomas.weissschuh@linutronix.de, adobriyan@gmail.com,
johannes@sipsolutions.net, pedro.falcato@gmail.com,
hca@linux.ibm.com, willy@infradead.org, anna-maria@linutronix.de,
mark.rutland@arm.com, linus.walleij@linaro.org, Jason@zx2c4.com,
deller@gmx.de, rdunlap@infradead.org, davem@davemloft.net,
peterx@redhat.com, f.fainelli@gmail.com, gerg@kernel.org,
dave.hansen@linux.intel.com, mingo@kernel.org, ardb@kernel.org,
mhocko@suse.com, 42.hyeyoo@gmail.com, peterz@infradead.org,
ardb@google.com, enh@google.com, rientjes@google.com,
groeck@chromium.org, mpe@ellerman.id.au,
aleksandr.mikhalitsyn@canonical.com, mike.rapoport@gmail.com
Subject: Re: [PATCH v8 1/7] mseal sysmap: kernel config and header change
Date: Mon, 3 Mar 2025 08:37:37 -0800 [thread overview]
Message-ID: <202503030834.C4ED5911A@keescook> (raw)
In-Reply-To: <20250303050921.3033083-2-jeffxu@google.com>
On Mon, Mar 03, 2025 at 05:09:15AM +0000, jeffxu@chromium.org wrote:
> From: Jeff Xu <jeffxu@chromium.org>
>
> Provide infrastructure to mseal system mappings. Establish
> two kernel configs (CONFIG_MSEAL_SYSTEM_MAPPINGS,
> ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS) and VM_SEALED_SYSMAP
> macro for future patches.
>
> Signed-off-by: Jeff Xu <jeffxu@chromium.org>
> ---
> include/linux/mm.h | 10 ++++++++++
> init/Kconfig | 22 ++++++++++++++++++++++
> security/Kconfig | 21 +++++++++++++++++++++
> 3 files changed, 53 insertions(+)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 7b1068ddcbb7..8b800941678d 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -4155,4 +4155,14 @@ int arch_get_shadow_stack_status(struct task_struct *t, unsigned long __user *st
> int arch_set_shadow_stack_status(struct task_struct *t, unsigned long status);
> int arch_lock_shadow_stack_status(struct task_struct *t, unsigned long status);
>
> +
> +/*
> + * mseal of userspace process's system mappings.
> + */
> +#ifdef CONFIG_MSEAL_SYSTEM_MAPPINGS
> +#define VM_SEALED_SYSMAP VM_SEALED
> +#else
> +#define VM_SEALED_SYSMAP VM_NONE
> +#endif
> +
> #endif /* _LINUX_MM_H */
> diff --git a/init/Kconfig b/init/Kconfig
> index d0d021b3fa3b..c90dd8778993 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1882,6 +1882,28 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
> config ARCH_HAS_MEMBARRIER_SYNC_CORE
> bool
>
> +config ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
> + bool
> + help
> + Control MSEAL_SYSTEM_MAPPINGS access based on architecture.
> +
> + A 64-bit kernel is required for the memory sealing feature.
> + No specific hardware features from the CPU are needed.
> +
> + To enable this feature, the architecture needs to update their
> + special mappings calls to include the sealing flag and confirm
> + that it doesn't unmap/remap system mappings during the life
> + time of the process. The existence of this flag for an architecture
> + implies that it does not require the remapping of thest system
typo nit: "the" instead of "thest"
> + mappings during process lifetime, so sealing these mappings is safe
> + from a kernel perspective.
> +
> + After the architecture enables this, a distribution can set
> + CONFIG_MSEAL_SYSTEM_MAPPING to manage access to the feature.
> +
> + For complete descriptions of memory sealing, please see
> + Documentation/userspace-api/mseal.rst
> +
> config HAVE_PERF_EVENTS
> bool
> help
> diff --git a/security/Kconfig b/security/Kconfig
> index f10dbf15c294..5311f4a6786c 100644
> --- a/security/Kconfig
> +++ b/security/Kconfig
> @@ -51,6 +51,27 @@ config PROC_MEM_NO_FORCE
>
> endchoice
>
> +config MSEAL_SYSTEM_MAPPINGS
> + bool "mseal system mappings"
> + depends on 64BIT
> + depends on ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
> + depends on !CHECKPOINT_RESTORE
> + help
> + Apply mseal on system mappings.
> + The system mappings includes vdso, vvar, vvar_vclock,
> + vectors (arm compact-mode), sigpage (arm compact-mode), uprobes.
typo nits: "compat" instead of "compact".
> +
> + A 64-bit kernel is required for the memory sealing feature.
> + No specific hardware features from the CPU are needed.
> +
> + WARNING: This feature breaks programs which rely on relocating
> + or unmapping system mappings. Known broken software at the time
> + of writing includes CHECKPOINT_RESTORE, UML, gVisor, rr. Therefore
> + this config can't be enabled universally.
> +
> + For complete descriptions of memory sealing, please see
> + Documentation/userspace-api/mseal.rst
> +
> config SECURITY
> bool "Enable different security models"
> depends on SYSFS
> --
> 2.48.1.711.g2feabab25a-goog
>
Perhaps akpm can fix these up directly instead of a v9 spin?
But otherwise, yes, reads well to me:
Reviewed-by: Kees Cook <kees@kernel.org>
--
Kees Cook
next prev parent reply other threads:[~2025-03-03 16:37 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-03 5:09 [PATCH v8 0/7] mseal system mappings jeffxu
2025-03-03 5:09 ` [PATCH v8 1/7] mseal sysmap: kernel config and header change jeffxu
2025-03-03 11:51 ` Lorenzo Stoakes
2025-03-03 15:02 ` Liam R. Howlett
2025-03-03 16:37 ` Kees Cook [this message]
2025-03-03 19:29 ` Jeff Xu
2025-03-03 5:09 ` [PATCH v8 2/7] selftests: x86: test_mremap_vdso: skip if vdso is msealed jeffxu
2025-03-03 15:00 ` Liam R. Howlett
2025-03-03 5:09 ` [PATCH v8 3/7] mseal sysmap: enable x86-64 jeffxu
2025-03-03 11:53 ` Lorenzo Stoakes
2025-03-03 12:01 ` Lorenzo Stoakes
2025-03-03 19:34 ` Jeff Xu
2025-03-03 15:03 ` Liam R. Howlett
2025-03-03 16:38 ` Kees Cook
2025-03-03 5:09 ` [PATCH v8 4/7] mseal sysmap: enable arm64 jeffxu
2025-03-03 11:53 ` Lorenzo Stoakes
2025-03-03 15:04 ` Liam R. Howlett
2025-03-03 16:39 ` Kees Cook
2025-03-03 5:09 ` [PATCH v8 5/7] mseal sysmap: uprobe mapping jeffxu
2025-03-03 6:28 ` Oleg Nesterov
2025-03-03 11:54 ` Lorenzo Stoakes
2025-03-03 15:04 ` Liam R. Howlett
2025-03-03 16:39 ` Kees Cook
2025-03-03 5:09 ` [PATCH v8 6/7] mseal sysmap: update mseal.rst jeffxu
2025-03-03 11:57 ` Lorenzo Stoakes
2025-03-03 15:05 ` Liam R. Howlett
2025-03-03 5:09 ` [PATCH v8 7/7] selftest: test system mappings are sealed jeffxu
2025-03-03 12:08 ` Lorenzo Stoakes
2025-03-03 16:43 ` Lorenzo Stoakes
2025-03-03 16:48 ` Kees Cook
2025-03-03 19:46 ` Jeff Xu
2025-03-03 16:47 ` Kees Cook
2025-03-03 16:49 ` Lorenzo Stoakes
2025-03-03 17:01 ` Kees Cook
2025-03-03 20:20 ` Jeff Xu
2025-03-04 20:53 ` Jeff Xu
2025-03-03 11:50 ` [PATCH v8 0/7] mseal system mappings Lorenzo Stoakes
2025-03-03 14:59 ` Liam R. Howlett
2025-03-03 16:33 ` Kees Cook
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=202503030834.C4ED5911A@keescook \
--to=kees@kernel.org \
--cc=42.hyeyoo@gmail.com \
--cc=Jason@zx2c4.com \
--cc=Liam.Howlett@oracle.com \
--cc=adhemerval.zanella@linaro.org \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=aleksandr.mikhalitsyn@canonical.com \
--cc=anna-maria@linutronix.de \
--cc=ardb@google.com \
--cc=ardb@kernel.org \
--cc=avagin@gmail.com \
--cc=benjamin@sipsolutions.net \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=enh@google.com \
--cc=f.fainelli@gmail.com \
--cc=gerg@kernel.org \
--cc=groeck@chromium.org \
--cc=hca@linux.ibm.com \
--cc=hch@lst.de \
--cc=jannh@google.com \
--cc=jeffxu@chromium.org \
--cc=johannes@sipsolutions.net \
--cc=jorgelo@chromium.org \
--cc=linus.walleij@linaro.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mark.rutland@arm.com \
--cc=mhocko@suse.com \
--cc=mike.rapoport@gmail.com \
--cc=mingo@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=ojeda@kernel.org \
--cc=oleg@redhat.com \
--cc=pedro.falcato@gmail.com \
--cc=peterx@redhat.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=rientjes@google.com \
--cc=sroettger@google.com \
--cc=thomas.weissschuh@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vbabka@suse.cz \
--cc=willy@infradead.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.