Thread (45 messages) 45 messages, 6 authors, 2016-07-18

Re: [PATCH 6/9] x86, pkeys: add pkey set/get syscalls

From: Dave Hansen <hidden>
Date: 2016-07-07 17:33:13
Also in: linux-arch, linux-mm, lkml

On 07/07/2016 07:45 AM, Mel Gorman wrote:
On Thu, Jul 07, 2016 at 05:47:28AM -0700, Dave Hansen wrote:
quoted
quoted
From: Dave Hansen <dave.hansen@linux.intel.com>

This establishes two more system calls for protection key management:

	unsigned long pkey_get(int pkey);
	int pkey_set(int pkey, unsigned long access_rights);

The return value from pkey_get() and the 'access_rights' passed
to pkey_set() are the same format: a bitmask containing
PKEY_DENY_WRITE and/or PKEY_DENY_ACCESS, or nothing set at all.

These can replace userspace's direct use of the new rdpkru/wrpkru
instructions.
...
This one feels like something that can or should be implemented in
glibc.
I generally agree, except that glibc doesn't have any visibility into
whether a pkey is currently valid or not.
There is no real enforcement of the values yet looking them up or
setting them takes mmap_sem for write.
There are checks for mm_pkey_is_allocated().  That's the main thing
these syscalls add on top of the raw instructions.
Applications that frequently get
called will get hammed into the ground with serialisation on mmap_sem
not to mention the cost of the syscall entry/exit.
I think we can do both of them without mmap_sem, as long as we resign
ourselves to this just being fundamentally racy (which it is already, I
think).  But, is it worth performance-tuning things that we don't expect
performance-sensitive apps to be using in the first place?  They'll just
use the RDPKRU/WRPKRU instructions directly.

Ingo, do you still feel strongly that these syscalls (pkey_set/get())
should be included?  Of the 5, they're definitely the two with the
weakest justification.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help