Re: [PATCHv3 33/33] mm, x86: introduce PR_SET_MAX_VADDR and PR_GET_MAX_VADDR

From: Dave Hansen
Date: Tue Feb 21 2017 - 15:47:13 EST


Let me make sure I'm grokking what you're trying to do here.

On 02/20/2017 05:15 AM, Kirill A. Shutemov wrote:
> +/* MPX cannot handle addresses above 47-bits yet. */
> +unsigned long mpx_unmapped_area_check(unsigned long addr, unsigned long len,
> + unsigned long flags)
> +{
> + if (!kernel_managing_mpx_tables(current->mm))
> + return addr;
> + if (addr + len <= DEFAULT_MAP_WINDOW)
> + return addr;

At this point, we know MPX management is on and the hint is for memory
above DEFAULT_MAP_WINDOW?

> + if (flags & MAP_FIXED)
> + return -ENOMEM;

... and if it's a MAP_FIXED request, fail it.

> + if (len > DEFAULT_MAP_WINDOW)
> + return -ENOMEM;

What is this case for? If addr+len wraps?

> + /* Look for unmap area within DEFAULT_MAP_WINDOW */
> + return 0;
> +}

Otherwise, blow away the hint, which we know is high and needs to
be discarded?