Thread (17 messages) 17 messages, 4 authors, 2025-01-09

Re: [PATCH v3 2/6] binfmt_elf: Use note name macros

From: Dave Martin <Dave.Martin@arm.com>
Date: 2025-01-08 13:45:17
Also in: kexec, linux-mm, linux-s390, lkml

Hi,

On Wed, Jan 08, 2025 at 01:34:24PM +0900, Akihiko Odaki wrote:
On 2025/01/08 1:18, Dave Martin wrote:
quoted
On Tue, Jan 07, 2025 at 09:45:53PM +0900, Akihiko Odaki wrote:
quoted
Use note name macros to match with the userspace's expectation.
Also (and more importantly) get rid of duplicated knowledge about the
mapping of note types to note names, so that elf.h is the authoritative
source of this information?
quoted
Signed-off-by: Akihiko Odaki <redacted>
Acked-by: Baoquan He <redacted>
---
  fs/binfmt_elf.c       | 21 ++++++++++-----------
  fs/binfmt_elf_fdpic.c |  8 ++++----
  2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 106f0e8af177..5b4a92e5e508 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
[...]
quoted
@@ -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 */
Looking at this code, it appears that the right name is explicitly
taken from elf.h for a few specific notes, but for those that are
specified by the arch code (e.g., in struct user_regset entries) the
name is still guessed locally:

static int fill_thread_core_info(...) {

...

	fill_note(&t->notes[note_iter], is_fpreg ? "CORE" : "LINUX",
		note_type, ret, data);


It would be preferable to clean this up if we want elf.h to be the
authoritative source for the names.
If we want elf.h to be the authoritative source, yes, but I like the current
form as it ensures nobody adds a note with a name different from "LINUX" and
it is also simpler. There is a trade-off so I'd like to keep the current
form unless anyone has a strong preference for one option.

Regards,
Akihiko Odaki
I can see where you're coming from here.

It would be nice to at least be able to check that elf.h is consistent
with the behaviour here, but you're right -- there is a tradeoff.

Maybe add a comment in elf.h at the end of the block of #defines saying
that new Linux-specific entries should use the name "LINUX"?

Either way, I don't think it's a huge deal.  If people are happy with
this code as-is, then I don't have an issue with it.


I might follow up with a separate patch if this series is merged, and
people can consider it on its own merits (or lack thereof).

Cheers
---Dave
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help