diff options
Diffstat (limited to 'tools/blktap/drivers/blktapctrl.c')
| -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 21cdfe5239..8a5630230e 100644 --- a/tools/blktap/drivers/blktapctrl.c +++ b/tools/blktap/drivers/blktapctrl.c @@ -659,9 +659,6 @@ 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); @@ -685,10 +682,6 @@ 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; @@ -712,11 +705,18 @@ 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;  } | 
