static int virtballoon_validate(struct virtio_device *vdev)
 {
-       /* Tell the host whether we care about poisoned pages. */
+       /*
+        * Inform the hypervisor that our pages are poisoned or
+        * initialized. If we cannot do that then we should disable
+        * page reporting as it could potentially change the contents
+        * of our free pages.
+        */
        if (!want_init_on_free() &&
            (IS_ENABLED(CONFIG_PAGE_POISONING_NO_SANITY) ||
             !page_poisoning_enabled()))
                __virtio_clear_bit(vdev, VIRTIO_BALLOON_F_PAGE_POISON);
+       else if (!virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON))
+               __virtio_clear_bit(vdev, VIRTIO_BALLOON_F_REPORTING);
 
        __virtio_clear_bit(vdev, VIRTIO_F_IOMMU_PLATFORM);
        return 0;