execve updates for v6.5-rc1
- Fix a few comments for correctness and typos (Baruch Siach) - Small simplifications for binfmt (Christophe JAILLET) - Set p_align to 4 for PT_NOTE in core dump (Fangrui Song) -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEpcP2jyKd1g9yPm4TiXL039xtwCYFAmSbc94WHGtlZXNjb29r QGNocm9taXVtLm9yZwAKCRCJcvTf3G3AJkWaEACb5idNLPHL5lb7zr1HGXWVnpo9 3a4gwNpZpDpODRSL5VQ93WUwzN+74hN15h85orXbjQRZRXJVM4gNmgHargqs4LIb LrbB04ylCoAnz+MYPAPkD0Yw4WZXqwK33V11V8luUf9q+zFemjQ0rOzFDmrX5a+y qxq8CvY/jETmi5GPzKn35w8gJs8X++8GPIQ0ZDeQzYGZsZZ4m0+f1tqsC9bOmn/F LRn0ePaSTrYPQILQ2xVjlCv9HHk8MUsJu7+eyOI0NemWlITookofkycjMDe+9LpS hRKhdNbni24BEN2eDdJNC5TeXlvAOEQv4n4GFZ37sUQGdDhjdQTYF9sySluX5+Bo fx0qCQyWJMoskYBbBTAERv9hBxZctU94k82XaUxZA1bx0f9h+0USqwL9YrOnF5p/ 4734FUjeotGd8uFpUe/B6/SjRQ6WwYzwoEME/5Q/EKuotLrk3SfLu3fH/rl3cGH8 mlt4vwD0xDfFgb4Pj5wf8lqxpK+mMCusExqvzKVVV4L7Q5gDIntA2BvSRykjQ7VD vwRaQDM9mnDD/t0FgDVVHl91UF5Fsctf81UvfoI5eIMKqFo3NRGCV8znFf8G8//i 8Qmjj4kpxN+zMOi4nKsTjNDFmauRmOrGaDrWZnyO3m/VlYrYodnCKJbdLsqWH4zx a2O3oVICYLUeM0NEkQ== =01FE -----END PGP SIGNATURE----- Merge tag 'execve-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux Pull execve updates from Kees Cook: - Fix a few comments for correctness and typos (Baruch Siach) - Small simplifications for binfmt (Christophe JAILLET) - Set p_align to 4 for PT_NOTE in core dump (Fangrui Song) * tag 'execve-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: binfmt_elf: fix comment typo s/reset/regset/ elf: correct note name comment binfmt: Slightly simplify elf_fdpic_map_file() binfmt: Use struct_size() coredump, vmcore: Set p_align to 4 for PT_NOTE
This commit is contained in:
Коммит
d416a46c95
|
@ -1517,7 +1517,7 @@ static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
|
|||
phdr->p_filesz = sz;
|
||||
phdr->p_memsz = 0;
|
||||
phdr->p_flags = 0;
|
||||
phdr->p_align = 0;
|
||||
phdr->p_align = 4;
|
||||
}
|
||||
|
||||
static void fill_note(struct memelfnote *note, const char *name, int type,
|
||||
|
@ -1773,7 +1773,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
|||
/*
|
||||
* NT_PRSTATUS is the one special case, because the regset data
|
||||
* goes into the pr_reg field inside the note contents, rather
|
||||
* than being the whole note contents. We fill the reset in here.
|
||||
* than being the whole note contents. We fill the regset in here.
|
||||
* We assume that regset 0 is NT_PRSTATUS.
|
||||
*/
|
||||
fill_prstatus(&t->prstatus.common, t->task, signr);
|
||||
|
|
|
@ -743,12 +743,12 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
|
|||
struct elf32_fdpic_loadmap *loadmap;
|
||||
#ifdef CONFIG_MMU
|
||||
struct elf32_fdpic_loadseg *mseg;
|
||||
unsigned long load_addr;
|
||||
#endif
|
||||
struct elf32_fdpic_loadseg *seg;
|
||||
struct elf32_phdr *phdr;
|
||||
unsigned long load_addr, stop;
|
||||
unsigned nloads, tmp;
|
||||
size_t size;
|
||||
unsigned long stop;
|
||||
int loop, ret;
|
||||
|
||||
/* allocate a load map table */
|
||||
|
@ -760,8 +760,7 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
|
|||
if (nloads == 0)
|
||||
return -ELIBBAD;
|
||||
|
||||
size = sizeof(*loadmap) + nloads * sizeof(*seg);
|
||||
loadmap = kzalloc(size, GFP_KERNEL);
|
||||
loadmap = kzalloc(struct_size(loadmap, segs, nloads), GFP_KERNEL);
|
||||
if (!loadmap)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -770,9 +769,6 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
|
|||
loadmap->version = ELF32_FDPIC_LOADMAP_VERSION;
|
||||
loadmap->nsegs = nloads;
|
||||
|
||||
load_addr = params->load_addr;
|
||||
seg = loadmap->segs;
|
||||
|
||||
/* map the requested LOADs into the memory space */
|
||||
switch (params->flags & ELF_FDPIC_FLAG_ARRANGEMENT) {
|
||||
case ELF_FDPIC_FLAG_CONSTDISP:
|
||||
|
@ -1269,7 +1265,7 @@ static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offs
|
|||
phdr->p_filesz = sz;
|
||||
phdr->p_memsz = 0;
|
||||
phdr->p_flags = 0;
|
||||
phdr->p_align = 0;
|
||||
phdr->p_align = 4;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -877,7 +877,7 @@ static int __init merge_note_headers_elf64(char *elfptr, size_t *elfsz,
|
|||
phdr.p_offset = roundup(note_off, PAGE_SIZE);
|
||||
phdr.p_vaddr = phdr.p_paddr = 0;
|
||||
phdr.p_filesz = phdr.p_memsz = phdr_sz;
|
||||
phdr.p_align = 0;
|
||||
phdr.p_align = 4;
|
||||
|
||||
/* Add merged PT_NOTE program header*/
|
||||
tmp = elfptr + sizeof(Elf64_Ehdr);
|
||||
|
@ -1068,7 +1068,7 @@ static int __init merge_note_headers_elf32(char *elfptr, size_t *elfsz,
|
|||
phdr.p_offset = roundup(note_off, PAGE_SIZE);
|
||||
phdr.p_vaddr = phdr.p_paddr = 0;
|
||||
phdr.p_filesz = phdr.p_memsz = phdr_sz;
|
||||
phdr.p_align = 0;
|
||||
phdr.p_align = 4;
|
||||
|
||||
/* Add merged PT_NOTE program header*/
|
||||
tmp = elfptr + sizeof(Elf32_Ehdr);
|
||||
|
|
|
@ -372,7 +372,8 @@ typedef struct elf64_shdr {
|
|||
* Notes used in ET_CORE. Architectures export some of the arch register sets
|
||||
* using the corresponding note types via the PTRACE_GETREGSET and
|
||||
* PTRACE_SETREGSET requests.
|
||||
* The note name for all these is "LINUX".
|
||||
* The note name for these types is "LINUX", except NT_PRFPREG that is named
|
||||
* "CORE".
|
||||
*/
|
||||
#define NT_PRSTATUS 1
|
||||
#define NT_PRFPREG 2
|
||||
|
|
Загрузка…
Ссылка в новой задаче