Messages in this thread Patch in this message | | | Subject | Re: x86/fpu/xsave: protection key test failures | From | Dave Kleikamp <> | Date | Wed, 26 May 2021 10:50:27 -0500 |
| |
On 5/26/21 10:25 AM, Babu Moger wrote: > > > On 5/25/21 7:20 PM, Dave Hansen wrote: >> On 5/25/21 5:03 PM, Babu Moger wrote: >>>> What values do PKRU and the shadow have when the test fails? Is PKRU 0? >>> It goes back to default value 0x55555554. The test is expecting it to be >>> 0. Printed them below. >>> >>> test_ptrace_of_child()::1346, pkey_reg: 0x0000000055555554 shadow: >>> 0000000000000000 >>> protection_keys_64: pkey-helpers.h:127: _read_pkey_reg: Assertion >>> `pkey_reg == shadow_pkey_reg' failed. >> >> That's backwards (shadow vs pkru) from what I was expecting. >> >> Can you turn on all the debuging? >> >> Just compile with -DDEBUG_LEVEL=5 >> > > > Copied the logs at https://pastebin.com/gtQiHg8Q
I think this failed early due to the debug code. I have a patch that gets around this. From: Dave Kleikamp <dave.kleikamp@oracle.com> Subject: [PATCH] selftests/vm/pkeys: fix assert when DEBUG_LEVEL is set to 2 Date: Mon, 12 Apr 2021 17:13:31 -0500
test_implicit_mprotect_exec_only_memory() hits an assert in _read_pkey_reg() when DEBUG_LEVEL=2.
test 12 starting with pkey: 2 doing malloc_pkey_anon_huge(size=4096, prot=0x3, pkey=2) new_nr_records: 1 new_size: 24 sys_mprotect_pkey(0x0x7f44144bb000, 400000, prot=3, pkey=2) mprotect_pkey(0x7f44144bb000, 400000, prot=0x3, pkey=2) ret: 0 mprotect_pkey()::628, ret: 0 pkey_reg: 0x0000000000000000 shadow: 0x0000000000000000 unaligned protection_keys: pkey-helpers.h:127: _read_pkey_reg: Assertion `pkey_reg == shadow_pkey_reg' failed.
This patch provides one way to fix it. Would it be better to make sure that shadow_pkey_reg is properly set?
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com> Cc: Ram Pai <linuxram@us.ibm.com> --- tools/testing/selftests/vm/protection_keys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c index fdbb602ecf32..070f6f90dcce 100644 --- a/tools/testing/selftests/vm/protection_keys.c +++ b/tools/testing/selftests/vm/protection_keys.c @@ -1449,7 +1449,7 @@ void test_implicit_mprotect_exec_only_memory(int *ptr, u16 pkey) ret = mprotect(p1, PAGE_SIZE, PROT_EXEC); pkey_assert(!ret); - dprintf2("pkey_reg: %016llx\n", read_pkey_reg()); + dprintf2("pkey_reg: %016llx\n", __read_pkey_reg()); /* Make sure this is an *instruction* fault */ madvise(p1, PAGE_SIZE, MADV_DONTNEED); -- 2.31.1
| |