linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ilya Leoshkevich <iii@linux.ibm.com>
To: Alexander Gordeev <agordeev@linux.ibm.com>,
	Alexander Potapenko <glider@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Marco Elver <elver@google.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Pekka Enberg <penberg@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Vlastimil Babka <vbabka@suse.cz>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	Hyeonggon Yoo <42.hyeyoo@gmail.com>,
	kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, linux-s390@vger.kernel.org,
	linux-trace-kernel@vger.kernel.org,
	Mark Rutland <mark.rutland@arm.com>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Sven Schnelle <svens@linux.ibm.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>
Subject: [PATCH 22/32] s390/boot: Add the KMSAN runtime stub
Date: Wed, 15 Nov 2023 21:30:54 +0100	[thread overview]
Message-ID: <20231115203401.2495875-23-iii@linux.ibm.com> (raw)
In-Reply-To: <20231115203401.2495875-1-iii@linux.ibm.com>

It should be possible to have inline functions in the s390 header
files, which call kmsan_unpoison_memory(). The problem is that these
header files might be included by the decompressor, which does not
contain KMSAN runtime, causing linker errors.

Not compiling these calls if __SANITIZE_MEMORY__ is not defined -
either by changing kmsan-checks.h or at the call sites - may cause
unintended side effects, since calling these functions from an
uninstrumented code that is linked into the kernel is valid use case.

One might want to explicitly distinguish between the kernel and the
decompressor. Checking for a decompressor-specific #define is quite
heavy-handed, and will have to be done at all call sites.

A more generic approach is to provide a dummy kmsan_unpoison_memory()
definition. This produces some runtime overhead, but only when building
with CONFIG_KMSAN. The benefit is that it does not disturb the existing
KMSAN build logic and call sites don't need to be changed.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 arch/s390/boot/Makefile | 1 +
 arch/s390/boot/kmsan.c  | 6 ++++++
 2 files changed, 7 insertions(+)
 create mode 100644 arch/s390/boot/kmsan.c

diff --git a/arch/s390/boot/Makefile b/arch/s390/boot/Makefile
index 5a05c927f703..826005e2e3aa 100644
--- a/arch/s390/boot/Makefile
+++ b/arch/s390/boot/Makefile
@@ -43,6 +43,7 @@ obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE))	+=
 obj-$(CONFIG_RANDOMIZE_BASE)	+= kaslr.o
 obj-y	+= $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o
 obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o
+obj-$(CONFIG_KMSAN) += kmsan.o
 obj-all := $(obj-y) piggy.o syms.o
 
 targets	:= bzImage section_cmp.boot.data section_cmp.boot.preserved.data $(obj-y)
diff --git a/arch/s390/boot/kmsan.c b/arch/s390/boot/kmsan.c
new file mode 100644
index 000000000000..e7b3ac48143e
--- /dev/null
+++ b/arch/s390/boot/kmsan.c
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/kmsan-checks.h>
+
+void kmsan_unpoison_memory(const void *address, size_t size)
+{
+}
-- 
2.41.0


  parent reply	other threads:[~2023-11-15 20:36 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-15 20:30 [PATCH 00/32] kmsan: Enable on s390 Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 01/32] ftrace: Unpoison ftrace_regs in ftrace_ops_list_func() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 02/32] kmsan: Make the tests compatible with kmsan.panic=1 Ilya Leoshkevich
2023-11-16  9:27   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 03/32] kmsan: Disable KMSAN when DEFERRED_STRUCT_PAGE_INIT is enabled Ilya Leoshkevich
2023-11-16  9:41   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 04/32] kmsan: Increase the maximum store size to 4096 Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 05/32] kmsan: Fix is_bad_asm_addr() on arches with overlapping address spaces Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 06/32] kmsan: Fix kmsan_copy_to_user() " Ilya Leoshkevich
2023-11-16 10:13   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 07/32] kmsan: Remove a useless assignment from kmsan_vmap_pages_range_noflush() Ilya Leoshkevich
2023-11-16 10:52   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 08/32] kmsan: Remove an x86-specific #include from kmsan.h Ilya Leoshkevich
2023-11-16  9:44   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 09/32] kmsan: Introduce kmsan_memmove_metadata() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 10/32] kmsan: Expose kmsan_get_metadata() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 11/32] kmsan: Export panic_on_kmsan Ilya Leoshkevich
2023-11-16  9:14   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 12/32] kmsan: Allow disabling KMSAN checks for the current task Ilya Leoshkevich
2023-11-16  8:56   ` Alexander Potapenko
2023-11-16  9:17     ` Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 13/32] kmsan: Support SLAB_POISON Ilya Leoshkevich
2023-11-16 14:55   ` Alexander Potapenko
2023-11-16 15:08     ` Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 14/32] kmsan: Use ALIGN_DOWN() in kmsan_get_metadata() Ilya Leoshkevich
2023-11-16  9:54   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 15/32] mm: slub: Let KMSAN access metadata Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 16/32] mm: kfence: Disable KMSAN when checking the canary Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 17/32] lib/string: Add KMSAN support to strlcpy() and strlcat() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 18/32] lib/zlib: Unpoison DFLTCC output buffers Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 19/32] kmsan: Accept ranges starting with 0 on s390 Ilya Leoshkevich
2023-11-16 10:33   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 20/32] s390: Turn off KMSAN for boot, vdso and purgatory Ilya Leoshkevich
2023-11-16  9:20   ` Alexander Potapenko
2023-11-15 20:30 ` [PATCH 21/32] s390: Use a larger stack for KMSAN Ilya Leoshkevich
2023-11-16  9:45   ` Alexander Potapenko
2023-11-15 20:30 ` Ilya Leoshkevich [this message]
2023-11-15 20:30 ` [PATCH 23/32] s390/checksum: Add a KMSAN check Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 24/32] s390/cpacf: Unpoison the results of cpacf_trng() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 25/32] s390/ftrace: Unpoison ftrace_regs in kprobe_ftrace_handler() Ilya Leoshkevich
2023-11-15 20:30 ` [PATCH 26/32] s390/mm: Define KMSAN metadata for vmalloc and modules Ilya Leoshkevich
2023-11-16 15:03   ` Alexander Potapenko
2023-11-17 16:41     ` Alexander Gordeev
2023-11-15 20:30 ` [PATCH 27/32] s390/string: Add KMSAN support Ilya Leoshkevich
2023-11-16 21:42   ` kernel test robot
2023-11-15 20:31 ` [PATCH 28/32] s390/traps: Unpoison the kernel_stack_overflow()'s pt_regs Ilya Leoshkevich
2023-11-16 15:32   ` Alexander Potapenko
2023-11-15 20:31 ` [PATCH 29/32] s390/uaccess: Add KMSAN support to put_user() and get_user() Ilya Leoshkevich
2023-11-15 20:31 ` [PATCH 30/32] s390/unwind: Disable KMSAN checks Ilya Leoshkevich
2023-11-16  9:04   ` Alexander Potapenko
2023-11-16  9:05     ` Alexander Potapenko
2023-11-15 20:31 ` [PATCH 31/32] s390: Implement the architecture-specific kmsan functions Ilya Leoshkevich
2023-11-15 20:31 ` [PATCH 32/32] kmsan: Enable on s390 Ilya Leoshkevich
2023-11-16  8:42 ` [PATCH 00/32] " Alexander Potapenko
2023-11-16 10:13   ` Ilya Leoshkevich
2023-11-16 10:22     ` Christian Borntraeger

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=20231115203401.2495875-23-iii@linux.ibm.com \
    --to=iii@linux.ibm.com \
    --cc=42.hyeyoo@gmail.com \
    --cc=agordeev@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=borntraeger@linux.ibm.com \
    --cc=cl@linux.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=glider@google.com \
    --cc=gor@linux.ibm.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mhiramat@kernel.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rostedt@goodmis.org \
    --cc=svens@linux.ibm.com \
    --cc=vbabka@suse.cz \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).