Hi Dave, On 1 June 2016 at 14:32, Dave Hansen <dave@xxxxxxxx> wrote: > On 06/01/2016 11:37 AM, Jonathan Corbet wrote: >>> +static inline >>> +int mm_pkey_free(struct mm_struct *mm, int pkey) >>> +{ >>> + /* >>> + * pkey 0 is special, always allocated and can never >>> + * be freed. >>> + */ >>> + if (!pkey || !validate_pkey(pkey)) >>> + return -EINVAL; >>> + if (!mm_pkey_is_allocated(mm, pkey)) >>> + return -EINVAL; >>> + >>> + mm_set_pkey_free(mm, pkey); >>> + >>> + return 0; >>> +} >> >> If I read this right, it doesn't actually remove any pkey restrictions >> that may have been applied while the key was allocated. So there could be >> pages with that key assigned that might do surprising things if the key is >> reallocated for another use later, right? Is that how the API is intended >> to work? > > Yeah, that's how it works. > > It's not ideal. It would be _best_ if we during mm_pkey_free(), we > ensured that no VMAs under that mm have that vma_pkey() set. But, that > search would be potentially expensive (a walk over all VMAs), or would > force us to keep a data structure with a count of all the VMAs with a > given key. > > I should probably discuss this behavior in the manpages and address it s/probably// And, did I miss it. Was there an updated man-pages patch in the latest series? I did not notice it. > more directly in the changelog for this patch. Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>