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.

Reply via email to