mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 17:49:03 +02:00
execve fix for v6.14-rc6
- coredump: Only sort VMAs when core_sort_vma sysctl is set -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRSPkdeREjth1dHnSE2KwveOeQkuwUCZ8tUbwAKCRA2KwveOeQk u7VHAQDde9UqJ/meeBFhsEW7Fn3dMDL0bTTAJTKMw1YV4D7IiQEAjHBz9JKqrvXO pAMV9IoPsjpDKnz9aUWW+geJhjPsLQ8= =RFog -----END PGP SIGNATURE----- Merge tag 'execve-v6.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux Pull core dumping fix from Kees Cook: - Only sort VMAs when core_sort_vma sysctl is set * tag 'execve-v6.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: coredump: Only sort VMAs when core_sort_vma sysctl is set
This commit is contained in:
commit
dd047efbe0
2 changed files with 24 additions and 2 deletions
|
|
@ -212,6 +212,17 @@ pid>/``).
|
|||
This value defaults to 0.
|
||||
|
||||
|
||||
core_sort_vma
|
||||
=============
|
||||
|
||||
The default coredump writes VMAs in address order. By setting
|
||||
``core_sort_vma`` to 1, VMAs will be written from smallest size
|
||||
to largest size. This is known to break at least elfutils, but
|
||||
can be handy when dealing with very large (and truncated)
|
||||
coredumps where the more useful debugging details are included
|
||||
in the smaller VMAs.
|
||||
|
||||
|
||||
core_uses_pid
|
||||
=============
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ static void free_vma_snapshot(struct coredump_params *cprm);
|
|||
|
||||
static int core_uses_pid;
|
||||
static unsigned int core_pipe_limit;
|
||||
static unsigned int core_sort_vma;
|
||||
static char core_pattern[CORENAME_MAX_SIZE] = "core";
|
||||
static int core_name_size = CORENAME_MAX_SIZE;
|
||||
unsigned int core_file_note_size_limit = CORE_FILE_NOTE_SIZE_DEFAULT;
|
||||
|
|
@ -1026,6 +1027,15 @@ static const struct ctl_table coredump_sysctls[] = {
|
|||
.extra1 = (unsigned int *)&core_file_note_size_min,
|
||||
.extra2 = (unsigned int *)&core_file_note_size_max,
|
||||
},
|
||||
{
|
||||
.procname = "core_sort_vma",
|
||||
.data = &core_sort_vma,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_douintvec_minmax,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
.extra2 = SYSCTL_ONE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init init_fs_coredump_sysctls(void)
|
||||
|
|
@ -1256,6 +1266,7 @@ static bool dump_vma_snapshot(struct coredump_params *cprm)
|
|||
cprm->vma_data_size += m->dump_size;
|
||||
}
|
||||
|
||||
if (core_sort_vma)
|
||||
sort(cprm->vma_meta, cprm->vma_count, sizeof(*cprm->vma_meta),
|
||||
cmp_vma_size, NULL);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue