Subject: + virtio_balloon-leak_balloon-only-tell-host-if-we-got-pages-deflated.patch added to -mm tree To: lcapitulino@xxxxxxxxxx,aquini@xxxxxxxxxx,rusty@xxxxxxxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Mon, 17 Jun 2013 15:27:02 -0700 The patch titled Subject: virtio_balloon: leak_balloon(): only tell host if we got pages deflated has been added to the -mm tree. Its filename is virtio_balloon-leak_balloon-only-tell-host-if-we-got-pages-deflated.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Luiz Capitulino <lcapitulino@xxxxxxxxxx> Subject: virtio_balloon: leak_balloon(): only tell host if we got pages deflated balloon_page_dequeue() can return NULL. If it does for the first page being freed then leak_balloon() will create a scatter list with len=0. Which in turn seems to generate an invalid virtio request. I didn't get this in practice, I found it by code review. On the other hand, such an invalid virtio request will cause errors in QEMU and fill_balloon() also performs the same check implemented by this commit. Signed-off-by: Luiz Capitulino <lcapitulino@xxxxxxxxxx> Acked-by: Rafael Aquini <aquini@xxxxxxxxxx> Cc: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/virtio/virtio_balloon.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/virtio/virtio_balloon.c~virtio_balloon-leak_balloon-only-tell-host-if-we-got-pages-deflated drivers/virtio/virtio_balloon.c --- a/drivers/virtio/virtio_balloon.c~virtio_balloon-leak_balloon-only-tell-host-if-we-got-pages-deflated +++ a/drivers/virtio/virtio_balloon.c @@ -191,7 +191,8 @@ static void leak_balloon(struct virtio_b * virtio_has_feature(vdev, VIRTIO_BALLOON_F_MUST_TELL_HOST); * is true, we *have* to do it in this order */ - tell_host(vb, vb->deflate_vq); + if (vb->num_pfns != 0) + tell_host(vb, vb->deflate_vq); mutex_unlock(&vb->balloon_lock); release_pages_by_pfn(vb->pfns, vb->num_pfns); } _ Patches currently in -mm which might be from lcapitulino@xxxxxxxxxx are virtio_balloon-leak_balloon-only-tell-host-if-we-got-pages-deflated.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html