From: Kees Cook > Sent: 04 October 2022 20:32 ... > Oh, yes! I do this all the time with FORTIFY shenanigans. Right, so, > instead of a macro, the "cannot be un-inlined" could be enforced with > this (untested): > > static __always_inline void set_clr_bits_msrl(u32 msr, u64 set, u64 clear) > { > u64 val, new_val; > > BUILD_BUG_ON(!__builtin_constant_p(msr) || > !__builtin_constant_p(set) || > !__builtin_constant_p(clear)); You can reduce the amount of text the brain has to parse by using: BUILD_BUG_ON(!__builtin_constant_p(msr + set + clear)); Just requires the brain to do a quick 'oh yes'... David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)