This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Fix tst-pkey.c pkey_alloc return checks and manual
- From: Florian Weimer <fweimer at redhat dot com>
- To: "Lucas A. M. Magalhaes" <lamm at linux dot ibm dot com>
- Cc: libc-alpha at sourceware dot org, tuliom at linux dot ibm dot com, Siddhesh Poyarekar <siddhesh at gotplt dot org>
- Date: Thu, 16 Jan 2020 14:48:37 +0100
- Subject: Re: [PATCH] Fix tst-pkey.c pkey_alloc return checks and manual
- References: <20200116133912.2578-1-lamm@linux.ibm.com>
* Lucas A. M. Magalhaes:
> 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.
> ---
> manual/memory.texi | 4 ++++
> sysdeps/unix/sysv/linux/tst-pkey.c | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/manual/memory.texi b/manual/memory.texi
> index b565dd69f2..aa5011e4f9 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 4c4fbae3ad..4ea1bc4f9a 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);
Looks okay to me.
Siddhesh has to approve this as the release manager, though.
Thanks,
Florian