Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] arm64: mte: add core dump support
@ 2022-01-31 16:54 Catalin Marinas
  2022-01-31 16:54 ` [PATCH v2 1/5] elfcore: Replace CONFIG_{IA64, UML} checks with a new option Catalin Marinas
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Catalin Marinas @ 2022-01-31 16:54 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Will Deacon, Luis Machado, John Baldwin, Arnd Bergmann,
	Eric W. Biederman, Szabolcs Nagy, Andrew Morton

Hi,

This is the second version of the core dump support for MTE tags.
Changes since v1
(https://lore.kernel.org/r/20211208121941.494956-1-catalin.marinas@arm.com):

- Made the documentation slightly clearer on what the size of a segment.
- Added Luis' acks.
- Rebased to 5.17-rc2.

The arm64 Memory Tagging Extensions allow assigning a 4-bit (allocation)
tag to a 16-byte memory range. Bits 56..59 of a pointer are checked
against the allocation tag on access and a fault may be raised if
there's a mismatch. The additional 4-bit metadata is useful for
debugging hence this series to dump it to the core file.

When a core file is generated and the user has mappings with PROT_MTE,
segments with the PT_ARM_MEMTAG_MTE type are dumped. These correspond to
the PT_LOAD segments for the same virtual addresses. The choice of an
ELF segment rather than a note was made due to the 32-bit size
limitation of a note which would only cover vmas up to 37-bit.

The last patch documents the core file format. The tags are dumped
packed, two 4-bit tags per byte (unlike ptrace where we have one tag per
byte) and there is no header to define the format, it's all fixed for
the PT_ARM_MEMTAG_MTE type.

Below you can see the output of 'readelf -a core' for a program mapping
two regions with PROT_MTE, one 2-page and the other 4-page long. Half of
the first page in each range was filled with 0xa and 0xb tags
respectively.

Program Headers:
  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align
  ...
  LOAD           0x030000 0x0000ffff80034000 0x0000000000000000 0x000000 0x002000 RW  0x1000
  LOAD           0x030000 0x0000ffff80036000 0x0000000000000000 0x004000 0x004000 RW  0x1000
  ...
  LOPROC+0x1     0x05b000 0x0000ffff80034000 0x0000000000000000 0x000100 0x002000     0
  LOPROC+0x1     0x05b100 0x0000ffff80036000 0x0000000000000000 0x000200 0x004000     0

The relevant 'od -tx1 core' output:

05b000 bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb
*
05b040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
05b100 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
*
05b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
05b300

Catalin Marinas (5):
  elfcore: Replace CONFIG_{IA64,UML} checks with a new option
  elf: Introduce the ARM MTE ELF segment type
  arm64: mte: Define the number of bytes for storing the tags in a page
  arm64: mte: Dump the MTE tags in the core file
  arm64: mte: Document the core dump file format

 .../arm64/memory-tagging-extension.rst        |  23 ++++
 arch/arm64/Kconfig                            |   1 +
 arch/arm64/include/asm/mte-def.h              |   1 +
 arch/arm64/kernel/Makefile                    |   1 +
 arch/arm64/kernel/elfcore.c                   | 123 ++++++++++++++++++
 arch/arm64/lib/mte.S                          |   4 +-
 arch/arm64/mm/mteswap.c                       |   2 +-
 arch/ia64/Kconfig                             |   1 +
 arch/x86/um/Kconfig                           |   1 +
 fs/Kconfig.binfmt                             |   3 +
 include/linux/elfcore.h                       |   4 +-
 include/uapi/linux/elf.h                      |   3 +
 12 files changed, 162 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm64/kernel/elfcore.c


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2022-02-15 23:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-31 16:54 [PATCH v2 0/5] arm64: mte: add core dump support Catalin Marinas
2022-01-31 16:54 ` [PATCH v2 1/5] elfcore: Replace CONFIG_{IA64, UML} checks with a new option Catalin Marinas
2022-02-15 17:39   ` [PATCH v2 1/5] elfcore: Replace CONFIG_{IA64,UML} " Will Deacon
2022-01-31 16:54 ` [PATCH v2 2/5] elf: Introduce the ARM MTE ELF segment type Catalin Marinas
2022-01-31 16:54 ` [PATCH v2 3/5] arm64: mte: Define the number of bytes for storing the tags in a page Catalin Marinas
2022-01-31 16:54 ` [PATCH v2 4/5] arm64: mte: Dump the MTE tags in the core file Catalin Marinas
2022-02-02 17:55   ` Mark Brown
2022-01-31 16:54 ` [PATCH v2 5/5] arm64: mte: Document the core dump file format Catalin Marinas
2022-02-15 23:18 ` [PATCH v2 0/5] arm64: mte: add core dump support Will Deacon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox