On Fri, 2023-04-14 at 10:57 -0400, Liam R. Howlett wrote:<br> > + tmp = mas_next(&mas, ULONG_MAX); > + if (tmp && (tmp->vm_flags & VM_GROWSDOWN)) { Why also check VM_GROWSDOWN here (and VM_GROWSUP below)? vm_start/end_gap() already have checks inside. > + if (vm_start_gap(tmp) < gap + length - 1) { > + low_limit = tmp->vm_end; > + mas_reset(&mas); > + goto retry; > + } > + } else { > + tmp = mas_prev(&mas, 0); > + if (tmp && (tmp->vm_flags & VM_GROWSUP) && > + vm_end_gap(tmp) > gap) { > + low_limit = vm_end_gap(tmp); > + mas_reset(&mas); > + goto retry; > + } > + } > + Could it be like this? tmp = mas_next(&mas, ULONG_MAX); if (tmp && vm_start_gap(tmp) < gap + length - 1) { low_limit = tmp->vm_end; mas_reset(&mas); goto retry; } } else { tmp = mas_prev(&mas, 0); if (tmp && vm_end_gap(tmp) > gap) { low_limit = vm_end_gap(tmp); mas_reset(&mas); goto retry; } }