The unmap_vmas() logic is designed to chew away at all the pages without
holding off preemption for too long. But with CONFIG_SMP=y and
CONFIG_PREEMPT=y the number of pages which we batch up between rescheduling
opportunities is not a multiple of HPAGE_SIZE. So unmap_vmas() ends up
calling unmap_hugepage_range() with a poorly aligned&sized region, and it
goes BUG.
Fix that up by ensuring that we always work across hugepage regions in
HPAGE_SIZE chunks.