Re: [PATCH v13 00/24] selftests, powerpc, x86 : Memory Protection Keys
On Thu, Jun 14, 2018 at 10:19:11PM +0200, Florian Weimer wrote: > On 06/14/2018 02:44 AM, Ram Pai wrote: > >Test > > > >Verified for correctness on powerpc. Need help verifying on x86. > >Compiles on x86. > > It breaks make in tools/testing/selftests/x86: > > make: *** No rule to make target `protection_keys.c', needed by > `/home/linux/tools/testing/selftests/x86/protection_keys_64'. Stop. Ah.. it has to be taken out from the Makefile of /home/linux/tools/testing/selftests/x86/ The sources have been moved to /home/linux/tools/testing/selftests/mm/ > > The generic implementation no longer builds 32-bit binaries. Is > this the intent? No. But building it 32-bit after moving it to a the new directory needs some special code in the Makefile. > > It's possible to build 32-bit binaries with “make CC='gcc -m32'”, so > perhaps this is good enough? Dave Hansen did mention it, but he did not complain too much. So I kept quite. > > But with that, I get a warning: > > protection_keys.c: In function ‘dump_mem’: > protection_keys.c:172:3: warning: format ‘%lx’ expects argument of > type ‘long unsigned int’, but argument 4 has type ‘uint64_t’ > [-Wformat=] >dprintf1("dump[%03d][@%p]: %016lx\n", i, ptr, *ptr); >^ > > I suppose you could use %016llx and add a cast to unsigned long long > to fix this. yes. > > Anyway, both the 32-bit and 64-bit tests fail here: > > assert() at protection_keys.c::943 test_nr: 12 iteration: 1 > running abort_hooks()... > > I've yet checked what causes this. It's with the kernel headers > from 4.17, but with other userspace headers based on glibc 2.17. I > hope to look into this some more before the weekend, but I > eventually have to return the test machine to the pool. I wish I could get a x86 machine which could do memory keys. Had a AWS instance, but struggled to boot my kernel. Can't get to the console... gave up. If someone can give me a ready-made machine with support for memkeys, I can quickly fix all the outstanding x86 issues. But if someone can just fix it for me, ;) RP
Re: [PATCH v13 00/24] selftests, powerpc, x86 : Memory Protection Keys
On 06/14/2018 02:44 AM, Ram Pai wrote: Test Verified for correctness on powerpc. Need help verifying on x86. Compiles on x86. It breaks make in tools/testing/selftests/x86: make: *** No rule to make target `protection_keys.c', needed by `/home/linux/tools/testing/selftests/x86/protection_keys_64'. Stop. The generic implementation no longer builds 32-bit binaries. Is this the intent? It's possible to build 32-bit binaries with “make CC='gcc -m32'”, so perhaps this is good enough? But with that, I get a warning: protection_keys.c: In function ‘dump_mem’: protection_keys.c:172:3: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] dprintf1("dump[%03d][@%p]: %016lx\n", i, ptr, *ptr); ^ I suppose you could use %016llx and add a cast to unsigned long long to fix this. Anyway, both the 32-bit and 64-bit tests fail here: assert() at protection_keys.c::943 test_nr: 12 iteration: 1 running abort_hooks()... I've yet checked what causes this. It's with the kernel headers from 4.17, but with other userspace headers based on glibc 2.17. I hope to look into this some more before the weekend, but I eventually have to return the test machine to the pool. Thanks, Florian
[PATCH v13 00/24] selftests, powerpc, x86 : Memory Protection Keys
Memory protection keys enables an application to protect its address space from inadvertent access by its own code. This feature is now enabled on powerpc architecture and integrated in 4.16-rc1. The patches move the selftests to arch neutral directory and enhance their test coverage. Test Verified for correctness on powerpc. Need help verifying on x86. Compiles on x86. History: --- version 13: (1) Incorporated comments for Dave Hansen. (2) Added one more test for correct pkey-0 behavior. version 12: (1) fixed the offset of pkey field in the siginfo structure for x86_64 and powerpc. And tries to use the actual field if the headers have it defined. version 11: (1) fixed a deadlock in the ptrace testcase. version 10 and prior: (1) moved the testcase to arch neutral directory (2) split the changes into incremental patches. Ram Pai (22): selftests/x86: Move protecton key selftest to arch neutral directory selftests/vm: rename all references to pkru to a generic name selftests/vm: move generic definitions to header file selftests/vm: typecast the pkey register selftests/vm: generic function to handle shadow key register selftests/vm: fix the wrong assert in pkey_disable_set() selftests/vm: fixed bugs in pkey_disable_clear() selftests/vm: clear the bits in shadow reg when a pkey is freed. selftests/vm: fix alloc_random_pkey() to make it really random selftests/vm: introduce two arch independent abstraction selftests/vm: pkey register should match shadow pkey selftests/vm: generic cleanup selftests/vm: powerpc implementation for generic abstraction selftests/vm: clear the bits in shadow reg when a pkey is freed. selftests/vm: powerpc implementation to check support for pkey selftests/vm: fix an assertion in test_pkey_alloc_exhaust() selftests/vm: associate key on a mapped page and detect access violation selftests/vm: associate key on a mapped page and detect write violation selftests/vm: detect write violation on a mapped access-denied-key page selftests/vm: testcases must restore pkey-permissions selftests/vm: sub-page allocator selftests/vm: test correct behavior of pkey-0 Thiago Jung Bauermann (2): selftests/vm: move arch-specific definitions to arch-specific header selftests/vm: Make gcc check arguments of sigsafe_printf() tools/testing/selftests/vm/.gitignore |1 + tools/testing/selftests/vm/Makefile |1 + tools/testing/selftests/vm/pkey-helpers.h | 214 tools/testing/selftests/vm/pkey-powerpc.h | 126 ++ tools/testing/selftests/vm/pkey-x86.h | 184 +++ tools/testing/selftests/vm/protection_keys.c | 1598 + tools/testing/selftests/x86/.gitignore|1 - tools/testing/selftests/x86/pkey-helpers.h| 219 tools/testing/selftests/x86/protection_keys.c | 1485 --- 9 files changed, 2124 insertions(+), 1705 deletions(-) create mode 100644 tools/testing/selftests/vm/pkey-helpers.h create mode 100644 tools/testing/selftests/vm/pkey-powerpc.h create mode 100644 tools/testing/selftests/vm/pkey-x86.h create mode 100644 tools/testing/selftests/vm/protection_keys.c delete mode 100644 tools/testing/selftests/x86/pkey-helpers.h delete mode 100644 tools/testing/selftests/x86/protection_keys.c