On Wed, Jun 20, 2018 at 07:47:02AM -0700, Dave Hansen wrote: > On 06/13/2018 05:44 PM, Ram Pai wrote: > > If the flag is 0, no bits will be set. Hence we cant expect > > the resulting bitmap to have a higher value than what it > > was earlier > ... > > if (flags) > > - pkey_assert(read_pkey_reg() > orig_pkey_reg); > > + pkey_assert(read_pkey_reg() >= orig_pkey_reg); > > dprintf1("END<---%s(%d, 0x%x)\n", __func__, > > pkey, flags); > > } > > This is the kind of thing where I'd love to hear the motivation and > background. This "disable a key that was already disabled" operation > obviously doesn't happen today. What motivated you to change it now? On powerpc, hardware supports READ_DISABLE and WRITE_DISABLE. ACCESS_DISABLE is basically READ_DISABLE|WRITE_DISABLE on powerpc. If access disable is called on a key followed by a write disable, the second operation becomes a nop. In such cases, read_pkey_reg() == orig_pkey_reg Hence the code above is modified to pkey_assert(read_pkey_reg() >= orig_pkey_reg); -- Ram Pai