Thread (49 messages) 49 messages, 3 authors, 2018-07-17

Re: [PATCH v13 08/24] selftests/vm: fix the wrong assert in pkey_disable_set()

From: Ram Pai <hidden>
Date: 2018-07-17 15:59:04
Also in: linux-arch, linux-kselftest, linux-mm

On Wed, Jun 20, 2018 at 07:47:02AM -0700, Dave Hansen wrote:
On 06/13/2018 05:44 PM, Ram Pai wrote:
quoted
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
...
quoted
 	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help