Commit afabada9 authored by Al Viro's avatar Al Viro

elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)

we can't get to do_coredump() if that condition isn't satisfied...
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ec57941e
...@@ -1833,31 +1833,28 @@ static int fill_note_info(struct elfhdr *elf, int phdrs, ...@@ -1833,31 +1833,28 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
const siginfo_t *siginfo, struct pt_regs *regs) const siginfo_t *siginfo, struct pt_regs *regs)
{ {
struct list_head *t; struct list_head *t;
struct core_thread *ct;
struct elf_thread_status *ets;
if (!elf_note_info_init(info)) if (!elf_note_info_init(info))
return 0; return 0;
if (siginfo->si_signo) { for (ct = current->mm->core_state->dumper.next;
struct core_thread *ct; ct; ct = ct->next) {
struct elf_thread_status *ets; ets = kzalloc(sizeof(*ets), GFP_KERNEL);
if (!ets)
for (ct = current->mm->core_state->dumper.next; return 0;
ct; ct = ct->next) {
ets = kzalloc(sizeof(*ets), GFP_KERNEL);
if (!ets)
return 0;
ets->thread = ct->task; ets->thread = ct->task;
list_add(&ets->list, &info->thread_list); list_add(&ets->list, &info->thread_list);
} }
list_for_each(t, &info->thread_list) { list_for_each(t, &info->thread_list) {
int sz; int sz;
ets = list_entry(t, struct elf_thread_status, list); ets = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(siginfo->si_signo, ets); sz = elf_dump_thread_status(siginfo->si_signo, ets);
info->thread_status_size += sz; info->thread_status_size += sz;
}
} }
/* now collect the dump for the current */ /* now collect the dump for the current */
memset(info->prstatus, 0, sizeof(*info->prstatus)); memset(info->prstatus, 0, sizeof(*info->prstatus));
......
...@@ -1561,6 +1561,8 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm) ...@@ -1561,6 +1561,8 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
struct elf_shdr *shdr4extnum = NULL; struct elf_shdr *shdr4extnum = NULL;
Elf_Half e_phnum; Elf_Half e_phnum;
elf_addr_t e_shoff; elf_addr_t e_shoff;
struct core_thread *ct;
struct elf_thread_status *tmp;
/* /*
* We no longer stop all VM operations. * We no longer stop all VM operations.
...@@ -1596,28 +1598,23 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm) ...@@ -1596,28 +1598,23 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
goto cleanup; goto cleanup;
#endif #endif
if (cprm->siginfo->si_signo) { for (ct = current->mm->core_state->dumper.next;
struct core_thread *ct; ct; ct = ct->next) {
struct elf_thread_status *tmp; tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
if (!tmp)
for (ct = current->mm->core_state->dumper.next; goto cleanup;
ct; ct = ct->next) {
tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
if (!tmp)
goto cleanup;
tmp->thread = ct->task; tmp->thread = ct->task;
list_add(&tmp->list, &thread_list); list_add(&tmp->list, &thread_list);
} }
list_for_each(t, &thread_list) { list_for_each(t, &thread_list) {
struct elf_thread_status *tmp; struct elf_thread_status *tmp;
int sz; int sz;
tmp = list_entry(t, struct elf_thread_status, list); tmp = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(cprm->siginfo->si_signo, tmp); sz = elf_dump_thread_status(cprm->siginfo->si_signo, tmp);
thread_status_size += sz; thread_status_size += sz;
}
} }
/* now collect the dump for the current */ /* now collect the dump for the current */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment