diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2014-12-04 13:20:27 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2014-12-09 09:32:32 -0500 |
commit | 5c609a5ef05d98e26778824ba84581fe5e400db6 (patch) | |
tree | 487da89e8ad7ef9d3bcb485ae877518f1669e18b /drivers/s390 | |
parent | ce15408f350c4b97635618692a45aedabfdd2696 (diff) |
virtio: allow finalize_features to fail
This will make it easy for transports to validate features and return
failure.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/kvm/kvm_virtio.c | 4 | ||||
-rw-r--r-- | drivers/s390/kvm/virtio_ccw.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c index f5575ccdbb65..dd65c8b4c7fe 100644 --- a/drivers/s390/kvm/kvm_virtio.c +++ b/drivers/s390/kvm/kvm_virtio.c | |||
@@ -93,7 +93,7 @@ static u64 kvm_get_features(struct virtio_device *vdev) | |||
93 | return features; | 93 | return features; |
94 | } | 94 | } |
95 | 95 | ||
96 | static void kvm_finalize_features(struct virtio_device *vdev) | 96 | static int kvm_finalize_features(struct virtio_device *vdev) |
97 | { | 97 | { |
98 | unsigned int i, bits; | 98 | unsigned int i, bits; |
99 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; | 99 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; |
@@ -112,6 +112,8 @@ static void kvm_finalize_features(struct virtio_device *vdev) | |||
112 | if (__virtio_test_bit(vdev, i)) | 112 | if (__virtio_test_bit(vdev, i)) |
113 | out_features[i / 8] |= (1 << (i % 8)); | 113 | out_features[i / 8] |= (1 << (i % 8)); |
114 | } | 114 | } |
115 | |||
116 | return 0; | ||
115 | } | 117 | } |
116 | 118 | ||
117 | /* | 119 | /* |
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c index c792b5fe0bc9..789275fb577f 100644 --- a/drivers/s390/kvm/virtio_ccw.c +++ b/drivers/s390/kvm/virtio_ccw.c | |||
@@ -752,7 +752,7 @@ out_free: | |||
752 | return rc; | 752 | return rc; |
753 | } | 753 | } |
754 | 754 | ||
755 | static void virtio_ccw_finalize_features(struct virtio_device *vdev) | 755 | static int virtio_ccw_finalize_features(struct virtio_device *vdev) |
756 | { | 756 | { |
757 | struct virtio_ccw_device *vcdev = to_vc_device(vdev); | 757 | struct virtio_ccw_device *vcdev = to_vc_device(vdev); |
758 | struct virtio_feature_desc *features; | 758 | struct virtio_feature_desc *features; |
@@ -760,7 +760,7 @@ static void virtio_ccw_finalize_features(struct virtio_device *vdev) | |||
760 | 760 | ||
761 | ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL); | 761 | ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL); |
762 | if (!ccw) | 762 | if (!ccw) |
763 | return; | 763 | return 0; |
764 | 764 | ||
765 | features = kzalloc(sizeof(*features), GFP_DMA | GFP_KERNEL); | 765 | features = kzalloc(sizeof(*features), GFP_DMA | GFP_KERNEL); |
766 | if (!features) | 766 | if (!features) |
@@ -793,6 +793,8 @@ static void virtio_ccw_finalize_features(struct virtio_device *vdev) | |||
793 | out_free: | 793 | out_free: |
794 | kfree(features); | 794 | kfree(features); |
795 | kfree(ccw); | 795 | kfree(ccw); |
796 | |||
797 | return 0; | ||
796 | } | 798 | } |
797 | 799 | ||
798 | static void virtio_ccw_get_config(struct virtio_device *vdev, | 800 | static void virtio_ccw_get_config(struct virtio_device *vdev, |