elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 14 Oct 2013 11:39:56 +0000 (07:39 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 Nov 2013 05:16:30 +0000 (00:16 -0500)
we can't get to do_coredump() if that condition isn't satisfied...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/binfmt_elf.c
fs/binfmt_elf_fdpic.c

index 1af412b..571a423 100644 (file)
@@ -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));
index 645f6e5..fe2a643 100644 (file)
@@ -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.
@@ -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 */