]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kvm tools: Make host_ram_size() more robust
authorPekka Enberg <penberg@kernel.org>
Wed, 18 May 2011 18:41:36 +0000 (21:41 +0300)
committerPekka Enberg <penberg@kernel.org>
Wed, 18 May 2011 18:41:36 +0000 (21:41 +0300)
This patch fixes cryptic "out of memory" errors on hosts where sysconf() fails
by defaulting to MIN_RAM_SIZE_MB.

Reported-by: <born2befrag@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
tools/kvm/kvm-run.c

index ba8e5ce7f4f19e240c39c389364e3655d1a022e5..5451dfe940b60f4f02684150b40de2b3519ac8fe 100644 (file)
@@ -267,8 +267,16 @@ static u64 host_ram_size(void)
        long nr_pages;
 
        nr_pages        = sysconf(_SC_PHYS_PAGES);
+       if (nr_pages < 0) {
+               warning("sysconf(_SC_PHYS_PAGES) failed");
+               return 0;
+       }
 
        page_size       = sysconf(_SC_PAGE_SIZE);
+       if (page_size < 0) {
+               warning("sysconf(_SC_PAGE_SIZE) failed");
+               return 0;
+       }
 
        return (nr_pages * page_size) >> MB_SHIFT;
 }
@@ -287,6 +295,8 @@ static u64 get_ram_size(int nr_cpus)
        ram_size        = 64 * (nr_cpus + 3);
 
        available       = host_ram_size() * RAM_SIZE_RATIO;
+       if (!available)
+               available = MIN_RAM_SIZE_MB;
 
        if (ram_size > available)
                ram_size        = available;