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: <roy3zlnuefcxcri7htg2mxexjxcvl2efkli6sn67qpctjzktn5@y7swktsq4aon>
Date: Mon, 8 Dec 2025 14:46:23 -0800
From: Josh Poimboeuf <jpoimboe@...nel.org>
To: Peter Zijlstra <peterz@...radead.org>
Cc: x86@...nel.org, linux-kernel@...r.kernel.org, 
	Linus Torvalds <torvalds@...ux-foundation.org>, Ingo Molnar <mingo@...nel.org>, Borislav Petkov <bp@...en8.de>, 
	Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [PATCH 8/8] x86/alternative: Convert alternatives to assembler
 macros

On Mon, Dec 08, 2025 at 10:51:09AM +0100, Peter Zijlstra wrote:
> On Sat, Dec 06, 2025 at 01:41:15PM -0800, Josh Poimboeuf wrote:
> > Improve code generation readability by converting the alternatives into
> > assembler macros which are created when alternative.h is included.
> > 
> > Before:
> > 
> >   # ./arch/x86/include/asm/smap.h:47: 	alternative("", "stac", X86_FEATURE_SMAP);
> >   # 47 "./arch/x86/include/asm/smap.h" 1
> >   	# ALT: oldinstr
> >   771:
> > 
> >   772:
> >   # ALT: padding
> >   .skip -(((775f-774f)-(772b-771b)) > 0) * ((775f-774f)-(772b-771b)),0x90
> >   773:
> >   .pushsection .altinstructions, "aM", @progbits, 14
> >    .long 771b - .
> >    .long 774f - .
> >    .4byte ( 9*32+20)
> >    .byte 773b-771b
> >    .byte 775f-774f
> >   .popsection
> >   .pushsection .altinstr_replacement, "ax"
> >   ANNOTATE_DATA_SPECIAL
> >   # ALT: replacement
> >   774:
> >   	stac
> >   775:
> >   .popsection
> > 
> > After:
> > 
> >   # ./arch/x86/include/asm/smap.h:47: 	alternative("", "stac", X86_FEATURE_SMAP);
> >   # 47 "./arch/x86/include/asm/smap.h" 1
> > 	ALTERNATIVE "", "stac", "( 9*32+20)"
> > 
> 
> So the problem with the gas macro thing is that it doesn't allow for
> that nesting. I don't think we currently use it other than to define the
> ALTERNATIVE_2 and ALTERNATIVE_3 macros, but IIRC the reason I started
> all that was because it was fairly trivial to use things like
> CALL_NOSPEC in an alternative (where CALL_NOSPEC is already an
> alternative).

Trying to wrap my head around this nested alternative thing as I don't
see any current code doing that.  Does that only work when the inner
alternative points to the same first original instruction as the outer
one?  Or, can you patch anywhere inside the original or replacement?

-- 
Josh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ