lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z4ZXGN6C9J/jibD4@e133380.arm.com>
Date: Tue, 14 Jan 2025 12:22:48 +0000
From: Dave Martin <Dave.Martin@....com>
To: Akihiko Odaki <akihiko.odaki@...nix.com>
Cc: Eric Biederman <ebiederm@...ssion.com>, Kees Cook <kees@...nel.org>,
	Catalin Marinas <catalin.marinas@....com>,
	Mark Brown <broonie@...nel.org>, Baoquan He <bhe@...hat.com>,
	Vivek Goyal <vgoyal@...hat.com>, Dave Young <dyoung@...hat.com>,
	LEROY Christophe <christophe.leroy2@...soprasteria.com>,
	linux-mm@...ck.org, linux-kernel@...r.kernel.org,
	linuxppc-dev@...ts.ozlabs.org, linux-s390@...r.kernel.org,
	kexec@...ts.infradead.org, binutils@...rceware.org,
	devel@...nix.com
Subject: Re: [PATCH v4 2/6] binfmt_elf: Use note name macros

On Sat, Jan 11, 2025 at 02:48:45PM +0900, Akihiko Odaki wrote:
> Use note name macros to match with the userspace's expectation.
> 
> Signed-off-by: Akihiko Odaki <akihiko.odaki@...nix.com>
> Acked-by: Baoquan He <bhe@...hat.com>

Reviewed-by: Dave Martin <Dave.Martin@....com>

> ---
>  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
> @@ -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);
> diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
> index f1a7c4875c4a..96bd9d2f23d7 100644
> --- a/fs/binfmt_elf_fdpic.c
> +++ b/fs/binfmt_elf_fdpic.c
> @@ -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 */
> 
> -- 
> 2.47.1
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ