• Home
  • Raw
  • Download

Lines Matching refs:info

1761 			  struct elf_note_info *info,  in fill_note_info()  argument
1771 info->size = 0; in fill_note_info()
1772 info->thread = NULL; in fill_note_info()
1776 info->psinfo.data = NULL; /* So we don't free this wrongly */ in fill_note_info()
1780 fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo); in fill_note_info()
1785 info->thread_notes = 0; in fill_note_info()
1788 ++info->thread_notes; in fill_note_info()
1794 if (unlikely(info->thread_notes == 0) || in fill_note_info()
1811 notes[info->thread_notes]), in fill_note_info()
1817 if (ct->task == dump_task || !info->thread) { in fill_note_info()
1818 t->next = info->thread; in fill_note_info()
1819 info->thread = t; in fill_note_info()
1825 t->next = info->thread->next; in fill_note_info()
1826 info->thread->next = t; in fill_note_info()
1833 for (t = info->thread; t != NULL; t = t->next) in fill_note_info()
1834 if (!fill_thread_core_info(t, view, siginfo->si_signo, &info->size)) in fill_note_info()
1841 info->size += notesize(&info->psinfo); in fill_note_info()
1843 fill_siginfo_note(&info->signote, &info->csigdata, siginfo); in fill_note_info()
1844 info->size += notesize(&info->signote); in fill_note_info()
1846 fill_auxv_note(&info->auxv, current->mm); in fill_note_info()
1847 info->size += notesize(&info->auxv); in fill_note_info()
1849 if (fill_files_note(&info->files) == 0) in fill_note_info()
1850 info->size += notesize(&info->files); in fill_note_info()
1855 static size_t get_note_info_size(struct elf_note_info *info) in get_note_info_size() argument
1857 return info->size; in get_note_info_size()
1864 static int write_note_info(struct elf_note_info *info, in write_note_info() argument
1868 struct elf_thread_core_info *t = info->thread; in write_note_info()
1876 if (first && !writenote(&info->psinfo, cprm)) in write_note_info()
1878 if (first && !writenote(&info->signote, cprm)) in write_note_info()
1880 if (first && !writenote(&info->auxv, cprm)) in write_note_info()
1882 if (first && info->files.data && in write_note_info()
1883 !writenote(&info->files, cprm)) in write_note_info()
1886 for (i = 1; i < info->thread_notes; ++i) in write_note_info()
1898 static void free_note_info(struct elf_note_info *info) in free_note_info() argument
1900 struct elf_thread_core_info *threads = info->thread; in free_note_info()
1906 for (i = 1; i < info->thread_notes; ++i) in free_note_info()
1910 kfree(info->psinfo.data); in free_note_info()
1911 kvfree(info->files.data); in free_note_info()
1983 static int elf_note_info_init(struct elf_note_info *info) in elf_note_info_init() argument
1985 memset(info, 0, sizeof(*info)); in elf_note_info_init()
1986 INIT_LIST_HEAD(&info->thread_list); in elf_note_info_init()
1989 info->notes = kmalloc_array(8, sizeof(struct memelfnote), GFP_KERNEL); in elf_note_info_init()
1990 if (!info->notes) in elf_note_info_init()
1992 info->psinfo = kmalloc(sizeof(*info->psinfo), GFP_KERNEL); in elf_note_info_init()
1993 if (!info->psinfo) in elf_note_info_init()
1995 info->prstatus = kmalloc(sizeof(*info->prstatus), GFP_KERNEL); in elf_note_info_init()
1996 if (!info->prstatus) in elf_note_info_init()
1998 info->fpu = kmalloc(sizeof(*info->fpu), GFP_KERNEL); in elf_note_info_init()
1999 if (!info->fpu) in elf_note_info_init()
2002 info->xfpu = kmalloc(sizeof(*info->xfpu), GFP_KERNEL); in elf_note_info_init()
2003 if (!info->xfpu) in elf_note_info_init()
2010 struct elf_note_info *info, in fill_note_info() argument
2016 if (!elf_note_info_init(info)) in fill_note_info()
2026 list_add(&ets->list, &info->thread_list); in fill_note_info()
2029 list_for_each_entry(ets, &info->thread_list, list) { in fill_note_info()
2033 info->thread_status_size += sz; in fill_note_info()
2036 memset(info->prstatus, 0, sizeof(*info->prstatus)); in fill_note_info()
2037 fill_prstatus(info->prstatus, current, siginfo->si_signo); in fill_note_info()
2038 elf_core_copy_regs(&info->prstatus->pr_reg, regs); in fill_note_info()
2048 fill_note(info->notes + 0, "CORE", NT_PRSTATUS, in fill_note_info()
2049 sizeof(*info->prstatus), info->prstatus); in fill_note_info()
2050 fill_psinfo(info->psinfo, current->group_leader, current->mm); in fill_note_info()
2051 fill_note(info->notes + 1, "CORE", NT_PRPSINFO, in fill_note_info()
2052 sizeof(*info->psinfo), info->psinfo); in fill_note_info()
2054 fill_siginfo_note(info->notes + 2, &info->csigdata, siginfo); in fill_note_info()
2055 fill_auxv_note(info->notes + 3, current->mm); in fill_note_info()
2056 info->numnote = 4; in fill_note_info()
2058 if (fill_files_note(info->notes + info->numnote) == 0) { in fill_note_info()
2059 info->notes_files = info->notes + info->numnote; in fill_note_info()
2060 info->numnote++; in fill_note_info()
2064 info->prstatus->pr_fpvalid = elf_core_copy_task_fpregs(current, regs, in fill_note_info()
2065 info->fpu); in fill_note_info()
2066 if (info->prstatus->pr_fpvalid) in fill_note_info()
2067 fill_note(info->notes + info->numnote++, in fill_note_info()
2068 "CORE", NT_PRFPREG, sizeof(*info->fpu), info->fpu); in fill_note_info()
2070 if (elf_core_copy_task_xfpregs(current, info->xfpu)) in fill_note_info()
2071 fill_note(info->notes + info->numnote++, in fill_note_info()
2073 sizeof(*info->xfpu), info->xfpu); in fill_note_info()
2079 static size_t get_note_info_size(struct elf_note_info *info) in get_note_info_size() argument
2084 for (i = 0; i < info->numnote; i++) in get_note_info_size()
2085 sz += notesize(info->notes + i); in get_note_info_size()
2087 sz += info->thread_status_size; in get_note_info_size()
2092 static int write_note_info(struct elf_note_info *info, in write_note_info() argument
2098 for (i = 0; i < info->numnote; i++) in write_note_info()
2099 if (!writenote(info->notes + i, cprm)) in write_note_info()
2103 list_for_each_entry(ets, &info->thread_list, list) { in write_note_info()
2112 static void free_note_info(struct elf_note_info *info) in free_note_info() argument
2114 while (!list_empty(&info->thread_list)) { in free_note_info()
2115 struct list_head *tmp = info->thread_list.next; in free_note_info()
2121 if (info->notes_files) in free_note_info()
2122 kvfree(info->notes_files->data); in free_note_info()
2124 kfree(info->prstatus); in free_note_info()
2125 kfree(info->psinfo); in free_note_info()
2126 kfree(info->notes); in free_note_info()
2127 kfree(info->fpu); in free_note_info()
2129 kfree(info->xfpu); in free_note_info()
2193 struct elf_note_info info = { }; in elf_core_dump() local
2239 if (!fill_note_info(elf, e_phnum, &info, cprm->siginfo, cprm->regs)) in elf_core_dump()
2252 size_t sz = get_note_info_size(&info); in elf_core_dump()
2328 if (!write_note_info(&info, cprm)) in elf_core_dump()
2375 free_note_info(&info); in elf_core_dump()