All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/37] kmsan: Enable on s390
@ 2024-06-19 15:43 Ilya Leoshkevich
  2024-06-19 15:43 ` [PATCH v5 01/37] ftrace: Unpoison ftrace_regs in ftrace_ops_list_func() Ilya Leoshkevich
                   ` (36 more replies)
  0 siblings, 37 replies; 51+ messages in thread
From: Ilya Leoshkevich @ 2024-06-19 15:43 UTC (permalink / raw)
  To: Alexander Gordeev, Alexander Potapenko, Andrew Morton,
	Christoph Lameter, David Rientjes, Heiko Carstens, Joonsoo Kim,
	Marco Elver, Masami Hiramatsu, Pekka Enberg, Steven Rostedt,
	Vasily Gorbik, Vlastimil Babka
  Cc: Christian Borntraeger, Dmitry Vyukov, Hyeonggon Yoo, kasan-dev,
	linux-kernel, linux-mm, linux-s390, linux-trace-kernel,
	Mark Rutland, Roman Gushchin, Sven Schnelle, Ilya Leoshkevich

v4: https://lore.kernel.org/lkml/20240613153924.961511-1-iii@linux.ibm.com/
v4 -> v5: Fix the __memset() build issue.
          Change the attribute #defines to lowercase in order to match
          the existing code style.
          Fix the kmsan_virt_addr_valid() implementation to avoid
          recursion in debug builds, like it's done on x86_64 - dropped
          R-bs, please take another look.
          Add kmsan_disable_current()/kmsan_enable_current() doc;
          Fix the poisoned memchr_inv() value in a different way;
          Add the missing linux/instrumented.h #include;
          (Alexander P.).
          Patches that need review:
          - [PATCH 12/37] kmsan: Introduce memset_no_sanitize_memory()
          - [PATCH 13/37] kmsan: Support SLAB_POISON
          - [PATCH 17/37] mm: slub: Disable KMSAN when checking the padding bytes
          - [PATCH 36/37] s390/kmsan: Implement the architecture-specific functions

v3: https://lore.kernel.org/lkml/20231213233605.661251-1-iii@linux.ibm.com/
v3 -> v4: Rebase.
          Elaborate why ftrace_ops_list_func() change is needed on
          x64_64 (Steven).
          Add a comment to the DFLTCC patch (Alexander P.).
          Simplify diag224();
          Improve __arch_local_irq_attributes style;
          Use IS_ENABLED(CONFIG_KMSAN) for vmalloc area (Heiko).
          Align vmalloc area on _SEGMENT_SIZE (Alexander G.).

v2: https://lore.kernel.org/lkml/20231121220155.1217090-1-iii@linux.ibm.com/
v2 -> v3: Drop kmsan_memmove_metadata() and strlcpy() patches;
          Remove kmsan_get_metadata() stub;
          Move kmsan_enable_current() and kmsan_disable_current() to
          include/linux/kmsan.h, explain why a counter is needed;
          Drop the memset_no_sanitize_memory() patch;
          Use __memset() in the SLAB_POISON patch;
          Add kmsan-checks.h to the DFLTCC patch;
          Add recursion check to the arch_kmsan_get_meta_or_null()
          patch (Alexander P.).

          Fix inline + __no_kmsan_checks issues.
          New patch for s390/irqflags, that resolves a lockdep warning.
          New patch for s390/diag, that resolves a false positive when
          running on an LPAR.
          New patch for STCCTM, same as above.
          New patch for check_bytes_and_report() that resolves a false
          positive that occurs even on Intel.

v1: https://lore.kernel.org/lkml/20231115203401.2495875-1-iii@linux.ibm.com/
v1 -> v2: Add comments, sort #includes, introduce
          memset_no_sanitize_memory() and use it to avoid unpoisoning
          of redzones, change vmalloc alignment to _REGION3_SIZE, add
          R-bs (Alexander P.).

          Fix building
          [PATCH 28/33] s390/string: Add KMSAN support
          with FORTIFY_SOURCE.
          Reported-by: kernel test robot <lkp@intel.com>
          Closes: https://lore.kernel.org/oe-kbuild-all/202311170550.bSBo44ix-lkp@intel.com/

Hi,

This series provides the minimal support for Kernel Memory Sanitizer on
s390. Kernel Memory Sanitizer is clang-only instrumentation for finding
accesses to uninitialized memory. The clang support for s390 has already
been merged [1].

With this series, I can successfully boot s390 defconfig and
debug_defconfig with kmsan.panic=1. The tool found one real
s390-specific bug (fixed in master).

Best regards,
Ilya

[1] https://reviews.llvm.org/D148596

Ilya Leoshkevich (37):
  ftrace: Unpoison ftrace_regs in ftrace_ops_list_func()
  kmsan: Make the tests compatible with kmsan.panic=1
  kmsan: Disable KMSAN when DEFERRED_STRUCT_PAGE_INIT is enabled
  kmsan: Increase the maximum store size to 4096
  kmsan: Fix is_bad_asm_addr() on arches with overlapping address spaces
  kmsan: Fix kmsan_copy_to_user() on arches with overlapping address
    spaces
  kmsan: Remove a useless assignment from
    kmsan_vmap_pages_range_noflush()
  kmsan: Remove an x86-specific #include from kmsan.h
  kmsan: Expose kmsan_get_metadata()
  kmsan: Export panic_on_kmsan
  kmsan: Allow disabling KMSAN checks for the current task
  kmsan: Introduce memset_no_sanitize_memory()
  kmsan: Support SLAB_POISON
  kmsan: Use ALIGN_DOWN() in kmsan_get_metadata()
  kmsan: Do not round up pg_data_t size
  mm: slub: Let KMSAN access metadata
  mm: slub: Disable KMSAN when checking the padding bytes
  mm: kfence: Disable KMSAN when checking the canary
  lib/zlib: Unpoison DFLTCC output buffers
  kmsan: Accept ranges starting with 0 on s390
  s390/boot: Turn off KMSAN
  s390: Use a larger stack for KMSAN
  s390/boot: Add the KMSAN runtime stub
  s390/checksum: Add a KMSAN check
  s390/cpacf: Unpoison the results of cpacf_trng()
  s390/cpumf: Unpoison STCCTM output buffer
  s390/diag: Unpoison diag224() output buffer
  s390/ftrace: Unpoison ftrace_regs in kprobe_ftrace_handler()
  s390/irqflags: Do not instrument arch_local_irq_*() with KMSAN
  s390/mm: Define KMSAN metadata for vmalloc and modules
  s390/string: Add KMSAN support
  s390/traps: Unpoison the kernel_stack_overflow()'s pt_regs
  s390/uaccess: Add KMSAN support to put_user() and get_user()
  s390/uaccess: Add the missing linux/instrumented.h #include
  s390/unwind: Disable KMSAN checks
  s390/kmsan: Implement the architecture-specific functions
  kmsan: Enable on s390

 Documentation/dev-tools/kmsan.rst   |  11 ++-
 arch/s390/Kconfig                   |   1 +
 arch/s390/Makefile                  |   2 +-
 arch/s390/boot/Makefile             |   3 +
 arch/s390/boot/kmsan.c              |   6 ++
 arch/s390/boot/startup.c            |   7 ++
 arch/s390/boot/string.c             |  16 ++++
 arch/s390/include/asm/checksum.h    |   2 +
 arch/s390/include/asm/cpacf.h       |   3 +
 arch/s390/include/asm/cpu_mf.h      |   6 ++
 arch/s390/include/asm/irqflags.h    |  17 ++++-
 arch/s390/include/asm/kmsan.h       |  59 +++++++++++++++
 arch/s390/include/asm/pgtable.h     |   8 ++
 arch/s390/include/asm/string.h      |  20 +++--
 arch/s390/include/asm/thread_info.h |   2 +-
 arch/s390/include/asm/uaccess.h     | 112 ++++++++++++++++++++--------
 arch/s390/kernel/diag.c             |  10 ++-
 arch/s390/kernel/ftrace.c           |   2 +
 arch/s390/kernel/traps.c            |   6 ++
 arch/s390/kernel/unwind_bc.c        |   4 +
 drivers/s390/char/sclp.c            |   2 +-
 include/linux/kmsan.h               |  46 ++++++++++++
 include/linux/kmsan_types.h         |   2 +-
 kernel/trace/ftrace.c               |   1 +
 lib/zlib_dfltcc/dfltcc.h            |   1 +
 lib/zlib_dfltcc/dfltcc_util.h       |  28 +++++++
 mm/Kconfig                          |   1 +
 mm/kfence/core.c                    |  11 ++-
 mm/kmsan/core.c                     |   1 -
 mm/kmsan/hooks.c                    |  23 ++++--
 mm/kmsan/init.c                     |   7 +-
 mm/kmsan/instrumentation.c          |  11 +--
 mm/kmsan/kmsan.h                    |   9 +--
 mm/kmsan/kmsan_test.c               |   5 ++
 mm/kmsan/report.c                   |   8 +-
 mm/kmsan/shadow.c                   |   9 +--
 mm/slub.c                           |  33 ++++++--
 tools/objtool/check.c               |   2 +
 38 files changed, 410 insertions(+), 87 deletions(-)
 create mode 100644 arch/s390/boot/kmsan.c
 create mode 100644 arch/s390/include/asm/kmsan.h

-- 
2.45.1


^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2024-06-20 17:06 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-19 15:43 [PATCH v5 00/37] kmsan: Enable on s390 Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 01/37] ftrace: Unpoison ftrace_regs in ftrace_ops_list_func() Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 02/37] kmsan: Make the tests compatible with kmsan.panic=1 Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 03/37] kmsan: Disable KMSAN when DEFERRED_STRUCT_PAGE_INIT is enabled Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 04/37] kmsan: Increase the maximum store size to 4096 Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 05/37] kmsan: Fix is_bad_asm_addr() on arches with overlapping address spaces Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 06/37] kmsan: Fix kmsan_copy_to_user() " Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 07/37] kmsan: Remove a useless assignment from kmsan_vmap_pages_range_noflush() Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 08/37] kmsan: Remove an x86-specific #include from kmsan.h Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 09/37] kmsan: Expose kmsan_get_metadata() Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 10/37] kmsan: Export panic_on_kmsan Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 11/37] kmsan: Allow disabling KMSAN checks for the current task Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 12/37] kmsan: Introduce memset_no_sanitize_memory() Ilya Leoshkevich
2024-06-20  8:14   ` Alexander Potapenko
2024-06-19 15:43 ` [PATCH v5 13/37] kmsan: Support SLAB_POISON Ilya Leoshkevich
2024-06-20 14:58   ` Alexander Potapenko
2024-06-19 15:43 ` [PATCH v5 14/37] kmsan: Use ALIGN_DOWN() in kmsan_get_metadata() Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 15/37] kmsan: Do not round up pg_data_t size Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 16/37] mm: slub: Let KMSAN access metadata Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 17/37] mm: slub: Disable KMSAN when checking the padding bytes Ilya Leoshkevich
2024-06-20  9:00   ` Alexander Potapenko
2024-06-19 15:43 ` [PATCH v5 18/37] mm: kfence: Disable KMSAN when checking the canary Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 19/37] lib/zlib: Unpoison DFLTCC output buffers Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 20/37] kmsan: Accept ranges starting with 0 on s390 Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 21/37] s390/boot: Turn off KMSAN Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 22/37] s390: Use a larger stack for KMSAN Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 23/37] s390/boot: Add the KMSAN runtime stub Ilya Leoshkevich
2024-06-19 15:43 ` [PATCH v5 24/37] s390/checksum: Add a KMSAN check Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 25/37] s390/cpacf: Unpoison the results of cpacf_trng() Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 26/37] s390/cpumf: Unpoison STCCTM output buffer Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 27/37] s390/diag: Unpoison diag224() " Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 28/37] s390/ftrace: Unpoison ftrace_regs in kprobe_ftrace_handler() Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 29/37] s390/irqflags: Do not instrument arch_local_irq_*() with KMSAN Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 30/37] s390/mm: Define KMSAN metadata for vmalloc and modules Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 31/37] s390/string: Add KMSAN support Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 32/37] s390/traps: Unpoison the kernel_stack_overflow()'s pt_regs Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 33/37] s390/uaccess: Add KMSAN support to put_user() and get_user() Ilya Leoshkevich
2024-06-20  8:36   ` Alexander Potapenko
2024-06-20 11:19     ` Ilya Leoshkevich
2024-06-20 11:46       ` Alexander Potapenko
2024-06-20 17:05       ` Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 34/37] s390/uaccess: Add the missing linux/instrumented.h #include Ilya Leoshkevich
2024-06-20  8:15   ` Alexander Potapenko
2024-06-19 15:44 ` [PATCH v5 35/37] s390/unwind: Disable KMSAN checks Ilya Leoshkevich
2024-06-19 15:44 ` [PATCH v5 36/37] s390/kmsan: Implement the architecture-specific functions Ilya Leoshkevich
2024-06-20  9:25   ` Alexander Gordeev
2024-06-20 13:38     ` Ilya Leoshkevich
2024-06-20 14:18       ` Alexander Potapenko
2024-06-20 14:19         ` Alexander Potapenko
2024-06-20 13:59   ` Alexander Gordeev
2024-06-19 15:44 ` [PATCH v5 37/37] kmsan: Enable on s390 Ilya Leoshkevich

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.