mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
binfmt_elf: Use note name macros
Use note name macros to match with the userspace's expectation. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Acked-by: Baoquan He <bhe@redhat.com> Reviewed-by: Dave Martin <Dave.Martin@arm.com> Link: https://lore.kernel.org/r/20250115-elf-v5-2-0f9e55bbb2fc@daynix.com Signed-off-by: Kees Cook <kees@kernel.org>
This commit is contained in:
parent
7da8e4ad4d
commit
2fc4947bbd
@ -762,8 +762,7 @@ static int parse_elf_property(const char *data, size_t *off, size_t datasz,
|
||||
}
|
||||
|
||||
#define NOTE_DATA_SZ SZ_1K
|
||||
#define GNU_PROPERTY_TYPE_0_NAME "GNU"
|
||||
#define NOTE_NAME_SZ (sizeof(GNU_PROPERTY_TYPE_0_NAME))
|
||||
#define NOTE_NAME_SZ (sizeof(NN_GNU_PROPERTY_TYPE_0))
|
||||
|
||||
static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr,
|
||||
struct arch_elf_state *arch)
|
||||
@ -800,7 +799,7 @@ static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr,
|
||||
if (note.nhdr.n_type != NT_GNU_PROPERTY_TYPE_0 ||
|
||||
note.nhdr.n_namesz != NOTE_NAME_SZ ||
|
||||
strncmp(note.data + sizeof(note.nhdr),
|
||||
GNU_PROPERTY_TYPE_0_NAME, n - sizeof(note.nhdr)))
|
||||
NN_GNU_PROPERTY_TYPE_0, n - sizeof(note.nhdr)))
|
||||
return -ENOEXEC;
|
||||
|
||||
off = round_up(sizeof(note.nhdr) + NOTE_NAME_SZ,
|
||||
@ -1603,14 +1602,14 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
|
||||
do
|
||||
i += 2;
|
||||
while (auxv[i - 2] != AT_NULL);
|
||||
fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
|
||||
fill_note(note, NN_AUXV, NT_AUXV, i * sizeof(elf_addr_t), auxv);
|
||||
}
|
||||
|
||||
static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
|
||||
const kernel_siginfo_t *siginfo)
|
||||
{
|
||||
copy_siginfo_to_external(csigdata, siginfo);
|
||||
fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
|
||||
fill_note(note, NN_SIGINFO, NT_SIGINFO, sizeof(*csigdata), csigdata);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1706,7 +1705,7 @@ static int fill_files_note(struct memelfnote *note, struct coredump_params *cprm
|
||||
}
|
||||
|
||||
size = name_curpos - (char *)data;
|
||||
fill_note(note, "CORE", NT_FILE, size, data);
|
||||
fill_note(note, NN_FILE, NT_FILE, size, data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1767,7 +1766,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
||||
regset_get(t->task, &view->regsets[0],
|
||||
sizeof(t->prstatus.pr_reg), &t->prstatus.pr_reg);
|
||||
|
||||
fill_note(&t->notes[0], "CORE", NT_PRSTATUS,
|
||||
fill_note(&t->notes[0], NN_PRSTATUS, NT_PRSTATUS,
|
||||
PRSTATUS_SIZE, &t->prstatus);
|
||||
info->size += notesize(&t->notes[0]);
|
||||
|
||||
@ -1801,7 +1800,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
||||
if (is_fpreg)
|
||||
SET_PR_FPVALID(&t->prstatus);
|
||||
|
||||
fill_note(&t->notes[note_iter], is_fpreg ? "CORE" : "LINUX",
|
||||
fill_note(&t->notes[note_iter], is_fpreg ? NN_PRFPREG : "LINUX",
|
||||
note_type, ret, data);
|
||||
|
||||
info->size += notesize(&t->notes[note_iter]);
|
||||
@ -1821,7 +1820,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
||||
fill_prstatus(&t->prstatus.common, p, signr);
|
||||
elf_core_copy_task_regs(p, &t->prstatus.pr_reg);
|
||||
|
||||
fill_note(&t->notes[0], "CORE", NT_PRSTATUS, sizeof(t->prstatus),
|
||||
fill_note(&t->notes[0], NN_PRSTATUS, NT_PRSTATUS, sizeof(t->prstatus),
|
||||
&(t->prstatus));
|
||||
info->size += notesize(&t->notes[0]);
|
||||
|
||||
@ -1832,7 +1831,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
||||
}
|
||||
|
||||
t->prstatus.pr_fpvalid = 1;
|
||||
fill_note(&t->notes[1], "CORE", NT_PRFPREG, sizeof(*fpu), fpu);
|
||||
fill_note(&t->notes[1], NN_PRFPREG, NT_PRFPREG, sizeof(*fpu), fpu);
|
||||
info->size += notesize(&t->notes[1]);
|
||||
|
||||
return 1;
|
||||
@ -1852,7 +1851,7 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
|
||||
psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
|
||||
if (!psinfo)
|
||||
return 0;
|
||||
fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
||||
fill_note(&info->psinfo, NN_PRPSINFO, NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
||||
|
||||
#ifdef CORE_DUMP_USE_REGSET
|
||||
view = task_user_regset_view(dump_task);
|
||||
|
@ -1397,7 +1397,7 @@ static struct elf_thread_status *elf_dump_thread_status(long signr, struct task_
|
||||
regset_get(p, &view->regsets[0],
|
||||
sizeof(t->prstatus.pr_reg), &t->prstatus.pr_reg);
|
||||
|
||||
fill_note(&t->notes[0], "CORE", NT_PRSTATUS, sizeof(t->prstatus),
|
||||
fill_note(&t->notes[0], NN_PRSTATUS, NT_PRSTATUS, sizeof(t->prstatus),
|
||||
&t->prstatus);
|
||||
t->num_notes++;
|
||||
*sz += notesize(&t->notes[0]);
|
||||
@ -1415,7 +1415,7 @@ static struct elf_thread_status *elf_dump_thread_status(long signr, struct task_
|
||||
}
|
||||
|
||||
if (t->prstatus.pr_fpvalid) {
|
||||
fill_note(&t->notes[1], "CORE", NT_PRFPREG, sizeof(t->fpu),
|
||||
fill_note(&t->notes[1], NN_PRFPREG, NT_PRFPREG, sizeof(t->fpu),
|
||||
&t->fpu);
|
||||
t->num_notes++;
|
||||
*sz += notesize(&t->notes[1]);
|
||||
@ -1530,7 +1530,7 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
|
||||
*/
|
||||
|
||||
fill_psinfo(psinfo, current->group_leader, current->mm);
|
||||
fill_note(&psinfo_note, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
||||
fill_note(&psinfo_note, NN_PRPSINFO, NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
||||
thread_status_size += notesize(&psinfo_note);
|
||||
|
||||
auxv = (elf_addr_t *) current->mm->saved_auxv;
|
||||
@ -1538,7 +1538,7 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm)
|
||||
do
|
||||
i += 2;
|
||||
while (auxv[i - 2] != AT_NULL);
|
||||
fill_note(&auxv_note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
|
||||
fill_note(&auxv_note, NN_AUXV, NT_AUXV, i * sizeof(elf_addr_t), auxv);
|
||||
thread_status_size += notesize(&auxv_note);
|
||||
|
||||
offset = sizeof(*elf); /* ELF header */
|
||||
|
Loading…
x
Reference in New Issue
Block a user