hw/virtio/virtio-balloon: zero-initialize the virtio_balloon_config struct
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 18 Jan 2019 18:36:03 +0000 (18:36 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 21 Jan 2019 17:20:36 +0000 (17:20 +0000)
In virtio_balloon_get_config() we initialize a struct virtio_balloon_config
which we then copy to guest memory. However, the local variable is not
zero initialized. This works OK at the moment because we initialize
all the fields in it; however an upcoming kernel header change will
add some new fields. If we don't zero out the whole struct then we
will start leaking a small amount of the contents of QEMU's stack
to the guest as soon as we update linux-headers/ to a set of headers
that includes the new fields.

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20190118183603.24757-1-peter.maydell@linaro.org

hw/virtio/virtio-balloon.c

index 1728e4f83afafed6e748449fb7c0cf73efda455a..a12677d4d5bf3dbf57f6412afedee0708db999da 100644 (file)
@@ -311,7 +311,7 @@ out:
 static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
 {
     VirtIOBalloon *dev = VIRTIO_BALLOON(vdev);
-    struct virtio_balloon_config config;
+    struct virtio_balloon_config config = {};
 
     config.num_pages = cpu_to_le32(dev->num_pages);
     config.actual = cpu_to_le32(dev->actual);