On Fri, Oct 16, 2020 at 01:07:47PM +0200, Peter Zijlstra wrote: > On Fri, Oct 09, 2020 at 12:42:54PM -0700, ira.weiny@xxxxxxxxx wrote: > > +static inline void pks_update_protection(int pkey, unsigned long protection) > > +{ > > + current->thread.saved_pkrs = update_pkey_val(current->thread.saved_pkrs, > > + pkey, protection); > > + preempt_disable(); > > + write_pkrs(current->thread.saved_pkrs); > > + preempt_enable(); > > +} > > write_pkrs() already disables preemption itself. Wrapping it in yet > another layer is useless. I was thinking the update to saved_pkrs needed this protection as well and that was to be included in the preemption disable. But that too is incorrect. I've removed this preemption disable. Thanks, Ira