diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-06-01 14:02:26 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-06-01 14:02:26 +0100 |
commit | 630ec346adf58902b3ebc81321cf85ea2ffa826a (patch) | |
tree | ac764c377baf98f8a4c60a7aafa629d56d98e2dc /tools | |
parent | 48a793e4b0b84149c4162cc27aec8849552783bc (diff) | |
download | xen-630ec346adf58902b3ebc81321cf85ea2ffa826a.tar.gz xen-630ec346adf58902b3ebc81321cf85ea2ffa826a.tar.bz2 xen-630ec346adf58902b3ebc81321cf85ea2ffa826a.zip |
blktap: Revert parts of c/s 19349.
Caused blktapctrl pipes to be created with uninitialised variable in name.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/blktap/drivers/blktapctrl.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c index 8a5630230e..21cdfe5239 100644 --- a/tools/blktap/drivers/blktapctrl.c +++ b/tools/blktap/drivers/blktapctrl.c @@ -659,6 +659,9 @@ static int blktapctrl_new_blkif(blkif_t *blkif) DPRINTF("Received a poll for a new vbd\n"); if ( ((blk=blkif->info) != NULL) && (blk->params != NULL) ) { + if (blktap_interface_create(ctlfd, &major, &minor, blkif) < 0) + return -1; + if (test_path(blk->params, &ptr, &type, &exist, &use_ioemu) != 0) { DPRINTF("Error in blktap device string(%s).\n", blk->params); @@ -682,6 +685,10 @@ static int blktapctrl_new_blkif(blkif_t *blkif) blkif->fds[WRITE] = exist->fds[WRITE]; } + add_disktype(blkif, type); + blkif->major = major; + blkif->minor = minor; + image = (image_t *)malloc(sizeof(image_t)); blkif->prv = (void *)image; blkif->ops = &tapdisk_ops; @@ -705,18 +712,11 @@ static int blktapctrl_new_blkif(blkif_t *blkif) goto fail; } - if (blktap_interface_create(ctlfd, &major, &minor, blkif) < 0) - return -1; - - blkif->major = major; - blkif->minor = minor; - - add_disktype(blkif, type); - } else return -1; return 0; fail: + ioctl(ctlfd, BLKTAP_IOCTL_FREEINTF, minor); return -EINVAL; } |