mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 02:36:49 +07:00
41eea9cd23
Tag-based KASAN inline instrumentation mode (which embeds checks of shadow memory into the generated code, instead of inserting a callback) generates a brk instruction when a tag mismatch is detected. This commit adds a tag-based KASAN specific brk handler, that decodes the immediate value passed to the brk instructions (to extract information about the memory access that triggered the mismatch), reads the register values (x0 contains the guilty address) and reports the bug. Link: http://lkml.kernel.org/r/c91fe7684070e34dc34b419e6b69498f4dcacc2d.1544099024.git.andreyknvl@google.com Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Acked-by: Will Deacon <will.deacon@arm.com> Cc: Christoph Lameter <cl@linux.com> Cc: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
28 lines
798 B
C
28 lines
798 B
C
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __ASM_BRK_IMM_H
|
|
#define __ASM_BRK_IMM_H
|
|
|
|
/*
|
|
* #imm16 values used for BRK instruction generation
|
|
* Allowed values for kgdb are 0x400 - 0x7ff
|
|
* 0x100: for triggering a fault on purpose (reserved)
|
|
* 0x400: for dynamic BRK instruction
|
|
* 0x401: for compile time BRK instruction
|
|
* 0x800: kernel-mode BUG() and WARN() traps
|
|
* 0x9xx: tag-based KASAN trap (allowed values 0x900 - 0x9ff)
|
|
*/
|
|
#define FAULT_BRK_IMM 0x100
|
|
#define KGDB_DYN_DBG_BRK_IMM 0x400
|
|
#define KGDB_COMPILED_DBG_BRK_IMM 0x401
|
|
#define BUG_BRK_IMM 0x800
|
|
#define KASAN_BRK_IMM 0x900
|
|
|
|
#endif
|