Michael, here's a bugfix for the virtio-ccw driver. Question: How would you like to get patches? This one is formatted against your current linux-next branch; I can prepare a branch for you to pull from as well. Pierre Morel (1): virtio/s390: handle failures of READ_VQ_CONF ccw drivers/s390/virtio/virtio_ccw.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) -- 2.3.8
Cornelia Huck
2015-Sep-10 14:35 UTC
[PATCH 1/1] virtio/s390: handle failures of READ_VQ_CONF ccw
From: Pierre Morel <pmorel at linux.vnet.ibm.com>
In virtio_ccw_read_vq_conf() the return value of ccw_io_helper()
was not checked.
If the configuration could not be read properly, we'd wrongly assume a
queue size of 0.
Let's propagate any I/O error to virtio_ccw_setup_vq() so it may
properly fail.
Signed-off-by: Pierre Morel <pmorel at linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck at de.ibm.com>
---
drivers/s390/virtio/virtio_ccw.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c
index f8d8fdb..e9fae30 100644
--- a/drivers/s390/virtio/virtio_ccw.c
+++ b/drivers/s390/virtio/virtio_ccw.c
@@ -400,12 +400,16 @@ static bool virtio_ccw_kvm_notify(struct virtqueue *vq)
static int virtio_ccw_read_vq_conf(struct virtio_ccw_device *vcdev,
struct ccw1 *ccw, int index)
{
+ int ret;
+
vcdev->config_block->index = index;
ccw->cmd_code = CCW_CMD_READ_VQ_CONF;
ccw->flags = 0;
ccw->count = sizeof(struct vq_config_block);
ccw->cda = (__u32)(unsigned long)(vcdev->config_block);
- ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_READ_VQ_CONF);
+ ret = ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_READ_VQ_CONF);
+ if (ret)
+ return ret;
return vcdev->config_block->num;
}
@@ -503,6 +507,10 @@ static struct virtqueue *virtio_ccw_setup_vq(struct
virtio_device *vdev,
goto out_err;
}
info->num = virtio_ccw_read_vq_conf(vcdev, ccw, i);
+ if (info->num < 0) {
+ err = info->num;
+ goto out_err;
+ }
size = PAGE_ALIGN(vring_size(info->num, KVM_VIRTIO_CCW_RING_ALIGN));
info->queue = alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
if (info->queue == NULL) {
--
2.3.8
On Thu, Sep 10, 2015 at 04:35:07PM +0200, Cornelia Huck wrote:> Michael, > > here's a bugfix for the virtio-ccw driver. > > Question: How would you like to get patches? This one is formatted > against your current linux-next branch; I can prepare a branch for > you to pull from as well.No need, patches are fine.> Pierre Morel (1): > virtio/s390: handle failures of READ_VQ_CONF ccw > > drivers/s390/virtio/virtio_ccw.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > -- > 2.3.8
Maybe Matching Threads
- [PATCH 0/1] virtio/s390: one bugfix
- [PATCH 1/1] virtio/s390: handle failures of READ_VQ_CONF ccw
- [PATCH RFC 0/1] virtio_ccw: new status accessor in driver
- [PATCH RFC 0/1] virtio_ccw: new status accessor in driver
- [PATCH v5 0/8] s390: virtio: support protected virtualization