Skip to content

Commit cabd696

Browse files
ebiedermgregkh
authored andcommitted
coredump/elf: Pass coredump_params into fill_note_info
commit 9ec7d32 upstream. Instead of individually passing cprm->siginfo and cprm->regs into fill_note_info pass all of struct coredump_params. This is preparation to allow fill_files_note to use the existing vma snapshot. Reviewed-by: Jann Horn <jannh@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 7ba958d commit cabd696

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

fs/binfmt_elf.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1799,7 +1799,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
17991799

18001800
static int fill_note_info(struct elfhdr *elf, int phdrs,
18011801
struct elf_note_info *info,
1802-
const kernel_siginfo_t *siginfo, struct pt_regs *regs)
1802+
struct coredump_params *cprm)
18031803
{
18041804
struct task_struct *dump_task = current;
18051805
const struct user_regset_view *view = task_user_regset_view(dump_task);
@@ -1871,7 +1871,7 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
18711871
* Now fill in each thread's information.
18721872
*/
18731873
for (t = info->thread; t != NULL; t = t->next)
1874-
if (!fill_thread_core_info(t, view, siginfo->si_signo, &info->size))
1874+
if (!fill_thread_core_info(t, view, cprm->siginfo->si_signo, &info->size))
18751875
return 0;
18761876

18771877
/*
@@ -1880,7 +1880,7 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
18801880
fill_psinfo(psinfo, dump_task->group_leader, dump_task->mm);
18811881
info->size += notesize(&info->psinfo);
18821882

1883-
fill_siginfo_note(&info->signote, &info->csigdata, siginfo);
1883+
fill_siginfo_note(&info->signote, &info->csigdata, cprm->siginfo);
18841884
info->size += notesize(&info->signote);
18851885

18861886
fill_auxv_note(&info->auxv, current->mm);
@@ -2028,7 +2028,7 @@ static int elf_note_info_init(struct elf_note_info *info)
20282028

20292029
static int fill_note_info(struct elfhdr *elf, int phdrs,
20302030
struct elf_note_info *info,
2031-
const kernel_siginfo_t *siginfo, struct pt_regs *regs)
2031+
struct coredump_params *cprm)
20322032
{
20332033
struct core_thread *ct;
20342034
struct elf_thread_status *ets;
@@ -2049,13 +2049,13 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
20492049
list_for_each_entry(ets, &info->thread_list, list) {
20502050
int sz;
20512051

2052-
sz = elf_dump_thread_status(siginfo->si_signo, ets);
2052+
sz = elf_dump_thread_status(cprm->siginfo->si_signo, ets);
20532053
info->thread_status_size += sz;
20542054
}
20552055
/* now collect the dump for the current */
20562056
memset(info->prstatus, 0, sizeof(*info->prstatus));
2057-
fill_prstatus(&info->prstatus->common, current, siginfo->si_signo);
2058-
elf_core_copy_regs(&info->prstatus->pr_reg, regs);
2057+
fill_prstatus(&info->prstatus->common, current, cprm->siginfo->si_signo);
2058+
elf_core_copy_regs(&info->prstatus->pr_reg, cprm->regs);
20592059

20602060
/* Set up header */
20612061
fill_elf_header(elf, phdrs, ELF_ARCH, ELF_CORE_EFLAGS);
@@ -2071,7 +2071,7 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
20712071
fill_note(info->notes + 1, "CORE", NT_PRPSINFO,
20722072
sizeof(*info->psinfo), info->psinfo);
20732073

2074-
fill_siginfo_note(info->notes + 2, &info->csigdata, siginfo);
2074+
fill_siginfo_note(info->notes + 2, &info->csigdata, cprm->siginfo);
20752075
fill_auxv_note(info->notes + 3, current->mm);
20762076
info->numnote = 4;
20772077

@@ -2081,8 +2081,8 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
20812081
}
20822082

20832083
/* Try to dump the FPU. */
2084-
info->prstatus->pr_fpvalid = elf_core_copy_task_fpregs(current, regs,
2085-
info->fpu);
2084+
info->prstatus->pr_fpvalid =
2085+
elf_core_copy_task_fpregs(current, cprm->regs, info->fpu);
20862086
if (info->prstatus->pr_fpvalid)
20872087
fill_note(info->notes + info->numnote++,
20882088
"CORE", NT_PRFPREG, sizeof(*info->fpu), info->fpu);
@@ -2195,7 +2195,7 @@ static int elf_core_dump(struct coredump_params *cprm)
21952195
* Collect all the non-memory information about the process for the
21962196
* notes. This also sets up the file header.
21972197
*/
2198-
if (!fill_note_info(&elf, e_phnum, &info, cprm->siginfo, cprm->regs))
2198+
if (!fill_note_info(&elf, e_phnum, &info, cprm))
21992199
goto end_coredump;
22002200

22012201
has_dumped = 1;

0 commit comments

Comments
 (0)