Skip to content

Commit ea5f95c

Browse files
Ram Paitorvalds
authored andcommitted
selftests/vm/pkeys: fix assertion in pkey_disable_set/clear()
In some cases, a pkey's bits need not necessarily change in a way that the value of the pkey register increases when performing a pkey_disable_set() or decreases when performing a pkey_disable_clear(). For example, on powerpc, if a pkey's current state is PKEY_DISABLE_ACCESS and we perform a pkey_write_disable() on it, the bits still remain the same. We will observe something similar when the pkey's current state is 0 and a pkey_access_enable() is performed on it. Either case would cause some assertions to fail. This fixes the problem. Signed-off-by: Ram Pai <[email protected]> Signed-off-by: Sandipan Das <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Acked-by: Dave Hansen <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Florian Weimer <[email protected]> Cc: "Desnes A. Nunes do Rosario" <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Thiago Jung Bauermann <[email protected]> Cc: "Aneesh Kumar K.V" <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Michal Suchanek <[email protected]> Cc: Shuah Khan <[email protected]> Link: http://lkml.kernel.org/r/8240665131e43fc93eed4eea8194676c1ea39a7f.1585646528.git.sandipan@linux.ibm.com Signed-off-by: Linus Torvalds <[email protected]>
1 parent 1155180 commit ea5f95c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

tools/testing/selftests/vm/protection_keys.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ void pkey_disable_set(int pkey, int flags)
400400
dprintf1("%s(%d) pkey_reg: 0x%016llx\n",
401401
__func__, pkey, read_pkey_reg());
402402
if (flags)
403-
pkey_assert(read_pkey_reg() > orig_pkey_reg);
403+
pkey_assert(read_pkey_reg() >= orig_pkey_reg);
404404
dprintf1("END<---%s(%d, 0x%x)\n", __func__,
405405
pkey, flags);
406406
}
@@ -431,7 +431,7 @@ void pkey_disable_clear(int pkey, int flags)
431431
dprintf1("%s(%d) pkey_reg: 0x%016llx\n", __func__,
432432
pkey, read_pkey_reg());
433433
if (flags)
434-
assert(read_pkey_reg() < orig_pkey_reg);
434+
assert(read_pkey_reg() <= orig_pkey_reg);
435435
}
436436

437437
void pkey_write_allow(int pkey)

0 commit comments

Comments
 (0)