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.