forked from Minki/linux
[PATCH] swsusp: fix enough_free_mem
This patch fixes a problem with the function enough_free_mem() used by swsusp to verify if there is a sufficient number of memory pages available to it to create and save the suspend image. Namely, enough_free_mem() uses nr_free_pages() to obtain the number of free memory pages, which is incorrect, because this function returns the total number of free pages, including free highmem pages, and the highmem pages cannot be used by swsusp for storing the image data. The patch makes enough_free_mem() avoid counting the free highmem pages as available to swsusp. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
72a97e0839
commit
e5e2fa7857
@ -428,8 +428,14 @@ void swsusp_free(void)
|
|||||||
|
|
||||||
static int enough_free_mem(unsigned int nr_pages)
|
static int enough_free_mem(unsigned int nr_pages)
|
||||||
{
|
{
|
||||||
pr_debug("swsusp: available memory: %u pages\n", nr_free_pages());
|
struct zone *zone;
|
||||||
return nr_free_pages() > (nr_pages + PAGES_FOR_IO +
|
unsigned int n = 0;
|
||||||
|
|
||||||
|
for_each_zone (zone)
|
||||||
|
if (!is_highmem(zone))
|
||||||
|
n += zone->free_pages;
|
||||||
|
pr_debug("swsusp: available memory: %u pages\n", n);
|
||||||
|
return n > (nr_pages + PAGES_FOR_IO +
|
||||||
(nr_pages + PBES_PER_PAGE - 1) / PBES_PER_PAGE);
|
(nr_pages + PBES_PER_PAGE - 1) / PBES_PER_PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user