On Tue, Feb 21, 2017 at 12:46:55PM -0800, Dave Hansen wrote:
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:
quoted
+/* 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?
Right.
quoted
+ if (flags & MAP_FIXED)
+ return -ENOMEM;
... and if it's a MAP_FIXED request, fail it.
Yep.
quoted
+ if (len > DEFAULT_MAP_WINDOW)
+ return -ENOMEM;
What is this case for? If addr+len wraps?
If len is too big to fit into DEFAULT_MAP_WINDOW there's no point in
resetting hint address as we know we can't satisfy it -- fail early.
quoted
+ /* 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?
Right.
--
Kirill A. Shutemov