Skip to content

Commit

Permalink
switch elf_core_write_extra_data() to dump_emit()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Nov 9, 2013
1 parent 506f21c commit aa3e7ea
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 13 deletions.
6 changes: 2 additions & 4 deletions arch/ia64/kernel/elfcore.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ int elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset)
return 1;
}

int elf_core_write_extra_data(struct file *file, size_t *size,
unsigned long limit)
int elf_core_write_extra_data(struct coredump_params *cprm)
{
const struct elf_phdr *const gate_phdrs =
(const struct elf_phdr *) (GATE_ADDR + GATE_EHDR->e_phoff);
Expand All @@ -52,8 +51,7 @@ int elf_core_write_extra_data(struct file *file, size_t *size,
void *addr = (void *)gate_phdrs[i].p_vaddr;
size_t memsz = PAGE_ALIGN(gate_phdrs[i].p_memsz);

*size += memsz;
if (*size > limit || !dump_write(file, addr, memsz))
if (!dump_emit(cprm, addr, memsz))
return 0;
break;
}
Expand Down
8 changes: 2 additions & 6 deletions arch/x86/um/elfcore.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ int elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset)
return 1;
}

int elf_core_write_extra_data(struct file *file, size_t *size,
unsigned long limit)
int elf_core_write_extra_data(struct coredump_params *cprm)
{
if ( vsyscall_ehdr ) {
const struct elfhdr *const ehdrp =
Expand All @@ -52,10 +51,7 @@ int elf_core_write_extra_data(struct file *file, size_t *size,
if (phdrp[i].p_type == PT_LOAD) {
void *addr = (void *) phdrp[i].p_vaddr;
size_t filesz = phdrp[i].p_filesz;

*size += filesz;
if (*size > limit
|| !dump_write(file, addr, filesz))
if (!dump_emit(cprm, addr, filesz))
return 0;
}
}
Expand Down
4 changes: 3 additions & 1 deletion fs/binfmt_elf.c
Original file line number Diff line number Diff line change
Expand Up @@ -2196,8 +2196,10 @@ static int elf_core_dump(struct coredump_params *cprm)
}
}

if (!elf_core_write_extra_data(cprm->file, &size, cprm->limit))
cprm->written = size;
if (!elf_core_write_extra_data(cprm))
goto end_coredump;
size = cprm->written;

if (e_phnum == PN_XNUM) {
size += sizeof(*shdr4extnum);
Expand Down
4 changes: 3 additions & 1 deletion fs/binfmt_elf_fdpic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1818,8 +1818,10 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
cprm->mm_flags) < 0)
goto end_coredump;

if (!elf_core_write_extra_data(cprm->file, &size, cprm->limit))
cprm->written = size;
if (!elf_core_write_extra_data(cprm))
goto end_coredump;
size = cprm->written;

if (e_phnum == PN_XNUM) {
size += sizeof(*shdr4extnum);
Expand Down
2 changes: 1 addition & 1 deletion include/linux/elfcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ extern Elf_Half elf_core_extra_phdrs(void);
extern int
elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset);
extern int
elf_core_write_extra_data(struct file *file, size_t *size, unsigned long limit);
elf_core_write_extra_data(struct coredump_params *cprm);
extern size_t elf_core_extra_data_size(void);

#endif /* _LINUX_ELFCORE_H */

0 comments on commit aa3e7ea

Please sign in to comment.