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

Commit 3d65c948 authored by Gianluca Guida's avatar Gianluca Guida Committed by Jeremy Fitzhardinge
Browse files

Xen balloon: fix totalram_pages counting.



Change totalram_pages when a single page is added/removed to the
ballooned list. This avoid totalram_pages to be set erroneously to
max_pfn at boot.

Signed-off-by: default avatarGianluca Guida <gianluca.guida@citrix.com>
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
parent b4606f21
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -136,6 +136,8 @@ static void balloon_append(struct page *page)
		list_add(&page->lru, &ballooned_pages);
		list_add(&page->lru, &ballooned_pages);
		balloon_stats.balloon_low++;
		balloon_stats.balloon_low++;
	}
	}

	totalram_pages--;
}
}


/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
@@ -156,6 +158,8 @@ static struct page *balloon_retrieve(void)
	else
	else
		balloon_stats.balloon_low--;
		balloon_stats.balloon_low--;


	totalram_pages++;

	return page;
	return page;
}
}


@@ -260,7 +264,6 @@ static int increase_reservation(unsigned long nr_pages)
	}
	}


	balloon_stats.current_pages += nr_pages;
	balloon_stats.current_pages += nr_pages;
	totalram_pages = balloon_stats.current_pages;


 out:
 out:
	spin_unlock_irqrestore(&balloon_lock, flags);
	spin_unlock_irqrestore(&balloon_lock, flags);
@@ -323,7 +326,6 @@ static int decrease_reservation(unsigned long nr_pages)
	BUG_ON(ret != nr_pages);
	BUG_ON(ret != nr_pages);


	balloon_stats.current_pages -= nr_pages;
	balloon_stats.current_pages -= nr_pages;
	totalram_pages = balloon_stats.current_pages;


	spin_unlock_irqrestore(&balloon_lock, flags);
	spin_unlock_irqrestore(&balloon_lock, flags);


@@ -422,7 +424,6 @@ static int __init balloon_init(void)
	pr_info("xen_balloon: Initialising balloon driver.\n");
	pr_info("xen_balloon: Initialising balloon driver.\n");


	balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn);
	balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn);
	totalram_pages   = balloon_stats.current_pages;
	balloon_stats.target_pages  = balloon_stats.current_pages;
	balloon_stats.target_pages  = balloon_stats.current_pages;
	balloon_stats.balloon_low   = 0;
	balloon_stats.balloon_low   = 0;
	balloon_stats.balloon_high  = 0;
	balloon_stats.balloon_high  = 0;