]> git.baikalelectronics.ru Git - kernel.git/commit
virtio_balloon: fix handling of PAGE_SIZE != 4k
authorMichael S. Tsirkin <mst@redhat.com>
Thu, 12 Apr 2012 13:38:00 +0000 (16:38 +0300)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 15 Apr 2012 08:51:06 +0000 (11:51 +0300)
commitdcd91cb90b24cc88c02026a7ddd75488de0162d0
treec0e0422269e8d340906848e4993d268b8d4170ad
parent9e4d300dbe1f78b8973520a106c111194979ecca
virtio_balloon: fix handling of PAGE_SIZE != 4k

As reported by David Gibson, current code handles PAGE_SIZE != 4k
completely wrong which can lead to guest memory corruption errors:

- page_to_balloon_pfn is wrong: e.g. on system with 64K page size
 it gives the same pfn value for 16 different pages.

- we also need to convert back to linux pfns when we free.

- for each linux page we need to tell host about multiple balloon
  pages, but code only adds one pfn to the array.

This patch fixes all that, tested with a 64k ppc64 kernel.

Reported-by: David Gibson <david@gibson.dropbear.id.au>
Tested-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio_balloon.c