aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/xen-blkback/blkback.c9
-rw-r--r--drivers/block/xen-blkback/xenbus.c6
2 files changed, 10 insertions, 5 deletions
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index 453b51a..362fbf6 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -620,10 +620,11 @@ static int dispatch_rw_block_io(struct blkif_st *blkif,
seg[i].nsec << 9,
seg[i].buf & ~PAGE_MASK) == 0)) {
- bio = biolist[nbio++] = bio_alloc(GFP_KERNEL, nseg-i);
+ bio = bio_alloc(GFP_KERNEL, nseg-i);
if (unlikely(bio == NULL))
goto fail_put_bio;
+ biolist[nbio++] = bio;
bio->bi_bdev = preq.bdev;
bio->bi_private = pending_req;
bio->bi_end_io = end_block_io_op;
@@ -636,10 +637,12 @@ static int dispatch_rw_block_io(struct blkif_st *blkif,
/* This will be hit if the operation was a flush. */
if (!bio) {
BUG_ON(operation != WRITE_FLUSH);
- bio = biolist[nbio++] = bio_alloc(GFP_KERNEL, 0);
+
+ bio = bio_alloc(GFP_KERNEL, 0);
if (unlikely(bio == NULL))
goto fail_put_bio;
+ biolist[nbio++] = bio;
bio->bi_bdev = preq.bdev;
bio->bi_private = pending_req;
bio->bi_end_io = end_block_io_op;
@@ -677,7 +680,7 @@ static int dispatch_rw_block_io(struct blkif_st *blkif,
return -EIO;
fail_put_bio:
- for (i = 0; i < (nbio-1); i++)
+ for (i = 0; i < nbio; i++)
bio_put(biolist[i]);
__end_block_io_op(pending_req, -EINVAL);
msleep(1); /* back off a bit */
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
index 5d2bbf6..ba8d306 100644
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -538,7 +538,8 @@ static void backend_changed(struct xenbus_watch *watch,
err = vbd_create(be->blkif, handle, major, minor,
(NULL == strchr(be->mode, 'w')), cdrom);
if (err) {
- be->major = be->minor = 0;
+ be->major = 0;
+ be->minor = 0;
xenbus_dev_fatal(dev, err, "creating vbd structure");
return;
}
@@ -546,7 +547,8 @@ static void backend_changed(struct xenbus_watch *watch,
err = xenvbd_sysfs_addif(dev);
if (err) {
vbd_free(&be->blkif->vbd);
- be->major = be->minor = 0;
+ be->major = 0;
+ be->minor = 0;
xenbus_dev_fatal(dev, err, "creating sysfs entries");
return;
}