LoongArch: Enable ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
authorYuli Wang <wangyuli@uniontech.com>
Fri, 30 May 2025 13:45:42 +0000 (21:45 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Fri, 30 May 2025 13:45:42 +0000 (21:45 +0800)
Provide support for CONFIG_MSEAL_SYSTEM_MAPPINGS on LoongArch, covering
the vdso.

Link: https://lore.kernel.org/all/25bad37f-273e-4626-999c-e1890be96182@lucifer.local/
Acked-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Acked-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Jeff Xu <jeffxu@chromium.org>
Tested-by: Yuli Wang <wangyuli@uniontech.com>
Signed-off-by: Yuli Wang <wangyuli@uniontech.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Documentation/features/core/mseal_sys_mappings/arch-support.txt
Documentation/userspace-api/mseal.rst
arch/loongarch/Kconfig
arch/loongarch/kernel/vdso.c

index c6cab97..a3c2423 100644 (file)
@@ -12,7 +12,7 @@
     |       arm64: |  ok  |
     |        csky: |  N/A |
     |     hexagon: |  N/A |
-    |   loongarch: | TODO |
+    |   loongarch: |  ok  |
     |        m68k: |  N/A |
     |  microblaze: |  N/A |
     |        mips: | TODO |
index 7195a7f..ea9b11a 100644 (file)
@@ -144,7 +144,7 @@ Use cases
   architecture.
 
   The following architectures currently support this feature: x86-64, arm64,
-  and s390.
+  loongarch and s390.
 
   WARNING: This feature breaks programs which rely on relocating
   or unmapping system mappings. Known broken software at the time
index 609b15a..bfc5604 100644 (file)
@@ -69,6 +69,7 @@ config LOONGARCH
        select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
        select ARCH_SUPPORTS_LTO_CLANG
        select ARCH_SUPPORTS_LTO_CLANG_THIN
+       select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
        select ARCH_SUPPORTS_NUMA_BALANCING
        select ARCH_SUPPORTS_RT
        select ARCH_USE_BUILTIN_BSWAP
index 10cf160..7b888d9 100644 (file)
@@ -105,7 +105,9 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 
        vdso_addr = data_addr + VVAR_SIZE;
        vma = _install_special_mapping(mm, vdso_addr, info->size,
-                                      VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
+                                      VM_READ | VM_EXEC |
+                                      VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC |
+                                      VM_SEALED_SYSMAP,
                                       &info->code_mapping);
        if (IS_ERR(vma)) {
                ret = PTR_ERR(vma);