]> Pileus Git - ~andy/linux/blobdiff - kernel/power/snapshot.c
PM / hibernate: Avoid overflow in hibernate_preallocate_memory()
[~andy/linux] / kernel / power / snapshot.c
index 98c3b34a4cffcedeae812de0ddc947f874cef839..10c22cae83a035e43eb54a79272fd1e6ae2fc757 100644 (file)
@@ -1402,7 +1402,11 @@ int hibernate_preallocate_memory(void)
         * highmem and non-highmem zones separately.
         */
        pages_highmem = preallocate_image_highmem(highmem / 2);
-       alloc = (count - max_size) - pages_highmem;
+       alloc = count - max_size;
+       if (alloc > pages_highmem)
+               alloc -= pages_highmem;
+       else
+               alloc = 0;
        pages = preallocate_image_memory(alloc, avail_normal);
        if (pages < alloc) {
                /* We have exhausted non-highmem pages, try highmem. */