|
@@ -202,6 +202,8 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num)
|
|
|
num = min(num, ARRAY_SIZE(vb->pfns));
|
|
|
|
|
|
mutex_lock(&vb->balloon_lock);
|
|
|
+ /* We can't release more pages than taken */
|
|
|
+ num = min(num, (size_t)vb->num_pages);
|
|
|
for (vb->num_pfns = 0; vb->num_pfns < num;
|
|
|
vb->num_pfns += VIRTIO_BALLOON_PAGES_PER_PAGE) {
|
|
|
page = balloon_page_dequeue(vb_dev_info);
|