[PATCH v14 20/22] selftests/vm: testcases must restore pkey-permissions
Dave Hansen
dave.hansen at intel.com
Thu Jul 19 02:56:49 AEST 2018
On 07/17/2018 06:49 AM, Ram Pai wrote:
> Generally the signal handler restores the state of the pkey register
> before returning. However there are times when the read/write operation
> can legitamely fail without invoking the signal handler. Eg: A
> sys_read() operaton to a write-protected page should be disallowed. In
> such a case the state of the pkey register is not restored to its
> original state. Test cases may not remember to restoring the key
> register state. During cleanup generically restore the key permissions.
This would, indeed be a good thing to do for a well-behaved application.
But, for selftests, why does it matter what state we leave the key in?
Doesn't the test itself need to establish permissions? Don't we *do*
that at pkey_alloc() anyway?
What problem does this solve?
> diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
> index 8a6afdd..ea3cf04 100644
> --- a/tools/testing/selftests/vm/protection_keys.c
> +++ b/tools/testing/selftests/vm/protection_keys.c
> @@ -1476,8 +1476,13 @@ void run_tests_once(void)
> pkey_tests[test_nr](ptr, pkey);
> dprintf1("freeing test memory: %p\n", ptr);
> free_pkey_malloc(ptr);
> +
> + /* restore the permission on the key after use */
> + pkey_access_allow(pkey);
> + pkey_write_allow(pkey);
> sys_pkey_free(pkey);
>
> +
> dprintf1("pkey_faults: %d\n", pkey_faults);
> dprintf1("orig_pkey_faults: %d\n", orig_pkey_faults);
More information about the Linuxppc-dev
mailing list