On Mon, 2019-06-17 at 15:24 -0700, Sean Christopherson wrote: > { > - if (len < 2 * PAGE_SIZE || len & (len - 1) || flags & MAP_PRIVATE) > + if (flags & MAP_PRIVATE) > + return -EINVAL; > + > + if (flags & MAP_FIXED) > + return addr; > + > + if (len < 2 * PAGE_SIZE || len & (len - 1)) > return -EINVAL; > > addr = current->mm->get_unmapped_area(file, addr, 2 * len, pgoff, Just sanity checking that for MAP_FIXED case the mm checks that the area is unmapped before calling this? I don't think we need to check any alignment constraints here anymore. The summarize end result would be: static unsigned long sgx_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { if (flags & MAP_PRIVATE) return -EINVAL; if (flags & MAP_FIXED) return addr; return current->mm->get_unmapped_area(file, addr, 2 * len, pgoff, flags); } /Jarkko