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: <20250212233242.pnzazr3lxu3f6p6e@jpoimboe>
Date: Wed, 12 Feb 2025 15:32:42 -0800
From: Josh Poimboeuf <jpoimboe@...hat.com>
To: Jan Beulich <jbeulich@...e.com>
Cc: lkml <linux-kernel@...r.kernel.org>, Juergen Gross <jgross@...e.com>,
	Peter Zijlstra <peterz@...radead.org>,
	Luc Van Oostenryck <luc.vanoostenryck@...il.com>
Subject: Re: [PATCH] compiler: remove stringification from __ADDRESSABLE_ASM()

On Wed, Feb 12, 2025 at 04:11:51PM +0100, Jan Beulich wrote:
> __ADDRESSABLE_ASM_STR() is where the necessary stringification happens.
> As long as "sym" doesn't contain any odd characters, no quoting is
> required for its use with .quad / .long. In fact the quotation gets in
> the way with gas 2.25; it's only from 2.26 onwards that quoted symbols
> are half-way properly supported.
> 
> Fixes: 0ef8047b737d ("x86/static-call: provide a way to do very early static-call updates")
> Signed-off-by: Jan Beulich <jbeulich@...e.com>
> Cc: stable@...r.kernel.org
> ---
> I think that __ADDRESSABLE_ASM{,_STR}() better would have a separate
> comment, as that presently kind of shared with {_,}__ADDRESSABLE() isn't
> really applicable to assembly code.
> 
> Is data allocation actually necessary in __ADDRESSABLE_ASM()? Aiui the
> sole goal is to have sym in the symbol table. That could be achieved by
> a simple .global (or e.g. .hidden) directive.

Hm, yes, but isn't that a bug?  It shouldn't be defining the symbol, as
that will already be defined elsewhere.  So it would link to the local
symbol instead of the actual static key defined in another object.

Even worse, the local symbol gets discarded during linking?  Not sure
how that works without a linker error...

.global sounds like it would work, then we can just remove all the
__ADDRESSABLE_ASM() cruft.

> Shouldn't Xen's __ADDRESSABLE_xen_hypercall use STATIC_CALL_KEY() rather
> than open-coding it?

Indeed...

> --- a/include/linux/compiler.h
> +++ b/include/linux/compiler.h
> @@ -245,7 +245,7 @@ static inline void *offset_to_ptr(const
>  #define __ADDRESSABLE_ASM(sym)						\
>  	.pushsection .discard.addressable,"aw";				\
>  	.align ARCH_SEL(8,4);						\
> -	ARCH_SEL(.quad, .long) __stringify(sym);			\
> +	ARCH_SEL(.quad, .long) sym;					\
>  	.popsection;
>  
>  #define __ADDRESSABLE_ASM_STR(sym) __stringify(__ADDRESSABLE_ASM(sym))

-- 
Josh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ