Revision f2d7b53c0153f2daa8bc8f1ff29b5a1e03a36458 authored by Alexander Potapenko on 02 November 2022, 10:15:00 UTC, committed by Alexander Potapenko on 02 November 2022, 10:55:06 UTC
There is a case in exc_invalid_op handler that is executed outside the
irqentry_enter()/irqentry_exit() region when an UD2 instruction is used
to encode a call to __warn().

In that case the `struct pt_regs` passed to the interrupt handler is
never unpoisoned by KMSAN (this is normally done in irqentry_enter()),
which leads to false positives inside handle_bug().

Use kmsan_unpoison_entry_regs() to explicitly unpoison those registers
before using them.

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Signed-off-by: Alexander Potapenko <glider@google.com>
1 parent 4dbc4d5
Raw File
Kconfig
# SPDX-License-Identifier: GPL-2.0-only
config XZ_DEC
	tristate "XZ decompression support"
	select CRC32
	help
	  LZMA2 compression algorithm and BCJ filters are supported using
	  the .xz file format as the container. For integrity checking,
	  CRC32 is supported. See Documentation/staging/xz.rst for more information.

if XZ_DEC

config XZ_DEC_X86
	bool "x86 BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_POWERPC
	bool "PowerPC BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_IA64
	bool "IA-64 BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_ARM
	bool "ARM BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_ARMTHUMB
	bool "ARM-Thumb BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_SPARC
	bool "SPARC BCJ filter decoder" if EXPERT
	default y
	select XZ_DEC_BCJ

config XZ_DEC_MICROLZMA
	bool "MicroLZMA decoder"
	default n
	help
	  MicroLZMA is a header format variant where the first byte
	  of a raw LZMA stream (without the end of stream marker) has
	  been replaced with a bitwise-negation of the lc/lp/pb
	  properties byte. MicroLZMA was created to be used in EROFS
	  but can be used by other things too where wasting minimal
	  amount of space for headers is important.

	  Unless you know that you need this, say N.

endif

config XZ_DEC_BCJ
	bool
	default n

config XZ_DEC_TEST
	tristate "XZ decompressor tester"
	default n
	depends on XZ_DEC
	help
	  This allows passing .xz files to the in-kernel XZ decoder via
	  a character special file. It calculates CRC32 of the decompressed
	  data and writes diagnostics to the system log.

	  Unless you are developing the XZ decoder, you don't need this
	  and should say N.
back to top