From: Lucas A. M. Magalhaes Date: Thu, 16 Jan 2020 13:39:12 +0000 (-0300) Subject: Fix tst-pkey.c pkey_alloc return checks and manual X-Git-Tag: glibc-2.31~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70ba28f7ab2923d4e36ffc9d5d2e32357353b25c;p=thirdparty%2Fglibc.git Fix tst-pkey.c pkey_alloc return checks and manual This test was failing in some powerpc systems as it was not checking for ENOSPC return. As said on the Linux man-pages and can be observed by the implementation at mm/mprotect.c in the Linux Kernel source. The syscall pkey_alloc can return EINVAL or ENOSPC. ENOSPC will indicate either that all keys are in use or that the kernel does not support pkeys. Reviewed-by: Gabriel F. T. Gomes --- diff --git a/manual/memory.texi b/manual/memory.texi index b565dd69f2b..aa5011e4f93 100644 --- a/manual/memory.texi +++ b/manual/memory.texi @@ -3288,6 +3288,10 @@ in which memory protection keys are disabled. @item ENOSPC All available protection keys already have been allocated. + +The system does not implement memory protection keys or runs in a mode +in which memory protection keys are disabled. + @end table @end deftypefun diff --git a/sysdeps/unix/sysv/linux/tst-pkey.c b/sysdeps/unix/sysv/linux/tst-pkey.c index 4c4fbae3ad8..4ea1bc4f9a9 100644 --- a/sysdeps/unix/sysv/linux/tst-pkey.c +++ b/sysdeps/unix/sysv/linux/tst-pkey.c @@ -197,6 +197,10 @@ do_test (void) if (errno == EINVAL) FAIL_UNSUPPORTED ("CPU does not support memory protection keys: %m"); + if (errno == ENOSPC) + FAIL_UNSUPPORTED + ("no keys available or kernel does not support memory" + " protection keys"); FAIL_EXIT1 ("pkey_alloc: %m"); } TEST_COMPARE (pkey_get (keys[0]), 0);