Thread (56 messages) 56 messages, 5 authors, 2023-11-17

Re: [PATCH 26/32] s390/mm: Define KMSAN metadata for vmalloc and modules

From: Alexander Potapenko <glider@google.com>
Date: 2023-11-16 15:03:59
Also in: linux-mm, linux-s390, lkml

On Wed, Nov 15, 2023 at 9:35 PM Ilya Leoshkevich [off-list ref] wrote:
quoted hunk ↗ jump to hunk
The pages for the KMSAN metadata associated with most kernel mappings
are taken from memblock by the common code. However, vmalloc and module
metadata needs to be defined by the architectures.

Be a little bit more careful than x86: allocate exactly MODULES_LEN
for the module shadow and origins, and then take 2/3 of vmalloc for
the vmalloc shadow and origins. This ensures that users passing small
vmalloc= values on the command line do not cause module metadata
collisions.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 arch/s390/boot/startup.c        |  8 ++++++++
 arch/s390/include/asm/pgtable.h | 10 ++++++++++
 2 files changed, 18 insertions(+)
diff --git a/arch/s390/boot/startup.c b/arch/s390/boot/startup.c
index 8104e0e3d188..297c1062372a 100644
--- a/arch/s390/boot/startup.c
+++ b/arch/s390/boot/startup.c
@@ -253,9 +253,17 @@ static unsigned long setup_kernel_memory_layout(void)
        MODULES_END = round_down(__abs_lowcore, _SEGMENT_SIZE);
        MODULES_VADDR = MODULES_END - MODULES_LEN;
        VMALLOC_END = MODULES_VADDR;
+#ifdef CONFIG_KMSAN
+       VMALLOC_END -= MODULES_LEN * 2;
+#endif

        /* allow vmalloc area to occupy up to about 1/2 of the rest virtual space left */
        vmalloc_size = min(vmalloc_size, round_down(VMALLOC_END / 2, _REGION3_SIZE));
+#ifdef CONFIG_KMSAN
+       /* take 2/3 of vmalloc area for KMSAN shadow and origins */
+       vmalloc_size = round_down(vmalloc_size / 3, PAGE_SIZE);
Is it okay that vmalloc_size is only aligned on PAGE_SIZE?
E.g. above the alignment is _REGION3_SIZE.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help