Re: [PATCH v2 07/10] x86/jump_label: Implement arch_static_assert()

From: Peter Zijlstra
Date: Thu Jan 18 2018 - 10:31:48 EST


On Thu, Jan 18, 2018 at 02:33:22PM +0100, Borislav Petkov wrote:
> On Tue, Jan 16, 2018 at 03:28:32PM +0100, Peter Zijlstra wrote:
> > Implement the static (branch) assertion. It simply emits the address
> > of the next instruction into a special section which objtool will read
> > and validate against either __jump_table or .altinstructions.
> >
> > Use like:
> >
> > if (static_branch_likely(_key)) {
> > arch_static_assert();
> > /* do stuff */
> > }
> >
> > Or
> >
> > if (static_cpu_has(_feat)) {
> > arch_static_assert();
>
> It looks to me like the asserts can be moved into the macros and the
> assertion checking can happen by default ...?

Right until the point where someone writes:

if (static_cpu_has(_feat) || ponies)

at which point it, rightfully, unconditionally asserts.

Not sure someone does that with static_cpu_has(), but there's
static_branch*() users that do exactly that.