On Thu, 4 Dec 2014 19:26:45 +0200 "Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote: > Legacy balloon device doesn't pretend to support revision 1 or 64 bit > features. > > But just in case someone implements a broken one that does, let's not > even try to drive legacy only devices using revision 1, and let's not > give them a chance to say they support VIRTIO_F_VERSION_1 by not reading > high feature bits. > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > drivers/s390/kvm/virtio_ccw.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c > index 4a3e6e5..088bdf1 100644 > --- a/drivers/s390/kvm/virtio_ccw.c > +++ b/drivers/s390/kvm/virtio_ccw.c > @@ -733,6 +733,9 @@ static u64 virtio_ccw_get_features(struct virtio_device *vdev) > > rc = le32_to_cpu(features->features); > > + if (vcdev->revision == 0) > + goto out_free; > + > /* Read second half of the feature bits from the host. */ > features->index = 1; > ccw->cmd_code = CCW_CMD_READ_FEAT; > @@ -1182,9 +1185,13 @@ static int virtio_ccw_online(struct ccw_device *cdev) > vcdev->vdev.id.vendor = cdev->id.cu_type; > vcdev->vdev.id.device = cdev->id.cu_model; > > - ret = virtio_ccw_set_transport_rev(vcdev); > - if (ret) > - goto out_free; > + if (virtio_device_is_legacy_only(vcdev->vdev.id)) { Inverted logic? > + ret = virtio_ccw_set_transport_rev(vcdev); > + if (ret) > + goto out_free; > + } else { > + vcdev->revision = 0; > + } > > ret = register_virtio_device(&vcdev->vdev); > if (ret) { _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization