unsigned long unmap_vmas (struct mmu_gather ** tlbp, struct mm_struct * mm, struct vm_area_struct * vma, unsigned long start_addr, unsigned long end_addr, unsigned long * nr_accounted, struct zap_details * details);
Returns the end address of the unmapping (restart addr if interrupted).
Unmap all pages in the vma list. Called under page_table_lock.
We aim to not hold page_table_lock for too long (for scheduling latency reasons). So zap pages in ZAP_BLOCK_SIZE bytecounts. This means we need to return the ending mmu_gather to the caller.
Only addresses between `start' and `end' will be unmapped.
The VMA list must be sorted in ascending virtual address order.
unmap_vmas assumes that the caller will flush the whole unmapped address range after unmap_vmas returns. So the only responsibility here is to ensure that any thus-far unmapped pages are flushed before unmap_vmas drops the lock and schedules.