Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3787dc85 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Revert "mm: add preempt points into __purge_vmap_area_lazy()""

parents 8869ea3b f3813d73
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -651,7 +651,7 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
	LIST_HEAD(valist);
	struct vmap_area *va;
	struct vmap_area *n_va;
	bool do_free = false;
	int nr = 0;

	/*
	 * If sync is 0 but force_flush is 1, we'll go sync anyway but callers
@@ -674,7 +674,7 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
				*start = va->va_start;
			if (va->va_end > *end)
				*end = va->va_end;
			do_free = true;
			nr += (va->va_end - va->va_start) >> PAGE_SHIFT;
			list_add_tail(&va->purge_list, &valist);
			va->flags |= VM_LAZY_FREEING;
			va->flags &= ~VM_LAZY_FREE;
@@ -682,17 +682,16 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
	}
	rcu_read_unlock();

	if (do_free || force_flush)
	if (nr)
		atomic_sub(nr, &vmap_lazy_nr);

	if (nr || force_flush)
		flush_tlb_kernel_range(*start, *end);

	if (do_free) {
	if (nr) {
		spin_lock(&vmap_area_lock);
		list_for_each_entry_safe(va, n_va, &valist, purge_list) {
			int nr = (va->va_end - va->va_start) >> PAGE_SHIFT;
		list_for_each_entry_safe(va, n_va, &valist, purge_list)
			__free_vmap_area(va);
			atomic_sub(nr, &vmap_lazy_nr);
			cond_resched_lock(&vmap_area_lock);
		}
		spin_unlock(&vmap_area_lock);
	}
	spin_unlock(&purge_lock);