diff options
Diffstat (limited to 'drivers/virtio/virtio_balloon.c')
-rw-r--r-- | drivers/virtio/virtio_balloon.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 888d5f8322ce..4e7003db12c4 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c | |||
@@ -207,6 +207,8 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num) | |||
207 | num = min(num, ARRAY_SIZE(vb->pfns)); | 207 | num = min(num, ARRAY_SIZE(vb->pfns)); |
208 | 208 | ||
209 | mutex_lock(&vb->balloon_lock); | 209 | mutex_lock(&vb->balloon_lock); |
210 | /* We can't release more pages than taken */ | ||
211 | num = min(num, (size_t)vb->num_pages); | ||
210 | for (vb->num_pfns = 0; vb->num_pfns < num; | 212 | for (vb->num_pfns = 0; vb->num_pfns < num; |
211 | vb->num_pfns += VIRTIO_BALLOON_PAGES_PER_PAGE) { | 213 | vb->num_pfns += VIRTIO_BALLOON_PAGES_PER_PAGE) { |
212 | page = balloon_page_dequeue(vb_dev_info); | 214 | page = balloon_page_dequeue(vb_dev_info); |