[PATCH 0/6] coredump: select memory types per request
From: Christian Brauner <brauner@kernel.org>
Date: 2026-08-21 11:52:23
Also in:
linux-fsdevel, linux-kselftest, linux-mm, lkml
Currently /proc/<pid>/coredump_filter determines what types of memory
are included in a coredump produced by <pid>. This is fairly static. The
coredump server has no easy way to configure what memory to dump even
though it can figure out all the necessary details to make an informed
decision.
Add a new COREDUMP_MEMORY_TYPES feature bit. If the coredump server
raises it the kernel will dump memory types raised in the
coredump_ack->memory_types member. Zero is valid and causes the creation
of a coredump that just includes the program headers and notes but no
memory apart from the mappings that are always dumped.
struct coredump_req gains @memory_types which is set to the default
memory types that are included in the coredump. This can be overridden by
raising bits in coredump_ack->memory_types. It also gains
@memory_types_mask which contains a bitmask of all memory types the
kernel knows about. A coredump server may only raise bits in
coredump_ack->memory_types that are raised in
coredump_req->memory_types_mask.
struct coredump_ack grows too. If COREDUMP_MEMORY_TYPES is raised in
@mask the kernel dumps the memory types set in the @memory_types mask.
Zero is valid and dumps no memory apart from the mappings that are
always dumped. A coredump server wanting to add or drop memory types
instead of outright replacing it should simply copy
coredump_req->memory_types and then mask off or raise types as needed.
@memory_types must be zero if COREDUMP_MEMORY_TYPES isn't raised.
COREDUMP_MEMORY_TYPES requires COREDUMP_KERNEL and an ack of at least
COREDUMP_ACK_SIZE_VER1 bytes.
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
---
Christian Brauner (6):
coredump: select memory types to include
tools: sync coredump.h header
selftests/coredump: simplify the refusal tests
selftests/coredump: test COREDUMP_MEMORY_TYPES
selftests/coredump: improve coredump size negotiation tests
selftests/coredump: test failed handshakes
Documentation/filesystems/proc.rst | 4 +
fs/coredump.c | 114 +-
include/linux/coredump.h | 4 +-
include/uapi/linux/coredump.h | 70 +-
tools/include/uapi/linux/coredump.h | 70 +-
.../coredump/coredump_socket_protocol_test.c | 1224 ++++++++++++--------
.../selftests/coredump/coredump_test_helpers.c | 279 ++++-
.../selftests/coredump/coredump_test_helpers.h | 26 +
8 files changed, 1274 insertions(+), 517 deletions(-)
---
base-commit: 19f075830e5d874749f55d837fc4e8af98df0559
change-id: 20260821-work-coredump-filter-1f9f04ded416