Skip to content

Commit

Permalink
elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
Browse files Browse the repository at this point in the history
we can't get to do_coredump() if that condition isn't satisfied...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Nov 9, 2013
1 parent ec57941 commit afabada
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 37 deletions.
33 changes: 15 additions & 18 deletions fs/binfmt_elf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1833,31 +1833,28 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
const siginfo_t *siginfo, struct pt_regs *regs)
{
struct list_head *t;
struct core_thread *ct;
struct elf_thread_status *ets;

if (!elf_note_info_init(info))
return 0;

if (siginfo->si_signo) {
struct core_thread *ct;
struct elf_thread_status *ets;

for (ct = current->mm->core_state->dumper.next;
ct; ct = ct->next) {
ets = kzalloc(sizeof(*ets), GFP_KERNEL);
if (!ets)
return 0;
for (ct = current->mm->core_state->dumper.next;
ct; ct = ct->next) {
ets = kzalloc(sizeof(*ets), GFP_KERNEL);
if (!ets)
return 0;

ets->thread = ct->task;
list_add(&ets->list, &info->thread_list);
}
ets->thread = ct->task;
list_add(&ets->list, &info->thread_list);
}

list_for_each(t, &info->thread_list) {
int sz;
list_for_each(t, &info->thread_list) {
int sz;

ets = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(siginfo->si_signo, ets);
info->thread_status_size += sz;
}
ets = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(siginfo->si_signo, ets);
info->thread_status_size += sz;
}
/* now collect the dump for the current */
memset(info->prstatus, 0, sizeof(*info->prstatus));
Expand Down
35 changes: 16 additions & 19 deletions fs/binfmt_elf_fdpic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1561,6 +1561,8 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
struct elf_shdr *shdr4extnum = NULL;
Elf_Half e_phnum;
elf_addr_t e_shoff;
struct core_thread *ct;
struct elf_thread_status *tmp;

/*
* We no longer stop all VM operations.
Expand Down Expand Up @@ -1596,28 +1598,23 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
goto cleanup;
#endif

if (cprm->siginfo->si_signo) {
struct core_thread *ct;
struct elf_thread_status *tmp;

for (ct = current->mm->core_state->dumper.next;
ct; ct = ct->next) {
tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
if (!tmp)
goto cleanup;
for (ct = current->mm->core_state->dumper.next;
ct; ct = ct->next) {
tmp = kzalloc(sizeof(*tmp), GFP_KERNEL);
if (!tmp)
goto cleanup;

tmp->thread = ct->task;
list_add(&tmp->list, &thread_list);
}
tmp->thread = ct->task;
list_add(&tmp->list, &thread_list);
}

list_for_each(t, &thread_list) {
struct elf_thread_status *tmp;
int sz;
list_for_each(t, &thread_list) {
struct elf_thread_status *tmp;
int sz;

tmp = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(cprm->siginfo->si_signo, tmp);
thread_status_size += sz;
}
tmp = list_entry(t, struct elf_thread_status, list);
sz = elf_dump_thread_status(cprm->siginfo->si_signo, tmp);
thread_status_size += sz;
}

/* now collect the dump for the current */
Expand Down

0 comments on commit afabada

Please sign in to comment.