mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +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,8 +1266,9 @@ static bool dump_vma_snapshot(struct coredump_params *cprm) | |||
| 		cprm->vma_data_size += m->dump_size; | ||||
| 	} | ||||
| 
 | ||||
| 	sort(cprm->vma_meta, cprm->vma_count, sizeof(*cprm->vma_meta), | ||||
| 		cmp_vma_size, NULL); | ||||
| 	if (core_sort_vma) | ||||
| 		sort(cprm->vma_meta, cprm->vma_count, sizeof(*cprm->vma_meta), | ||||
| 		     cmp_vma_size, NULL); | ||||
| 
 | ||||
| 	return true; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Linus Torvalds
						Linus Torvalds