aboutsummaryrefslogtreecommitdiffstats
path: root/tools/blktap
diff options
context:
space:
mode:
authorJake Wires <jwires@xensource.com>2007-02-23 09:40:32 -0800
committerJake Wires <jwires@xensource.com>2007-02-23 09:40:32 -0800
commit99a8295b9686e4addbc1469f8eea0014238e9e02 (patch)
tree6d83cd9c58086e8a359b1ca874424a4542c4a36f /tools/blktap
parent116cd90796197322ef6c7b9870e210c0d5b38f94 (diff)
downloadxen-99a8295b9686e4addbc1469f8eea0014238e9e02.tar.gz
xen-99a8295b9686e4addbc1469f8eea0014238e9e02.tar.bz2
xen-99a8295b9686e4addbc1469f8eea0014238e9e02.zip
[TAPDISK] handle error case when opening VDIs
Diffstat (limited to 'tools/blktap')
-rw-r--r--tools/blktap/drivers/tapdisk.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/blktap/drivers/tapdisk.c b/tools/blktap/drivers/tapdisk.c
index 43a037a053..965dbd9b7d 100644
--- a/tools/blktap/drivers/tapdisk.c
+++ b/tools/blktap/drivers/tapdisk.c
@@ -306,8 +306,11 @@ static int open_disk(struct td_state *s, struct tap_disk *drv, char *path)
return -ENOMEM;
err = drv->td_open(d, path, 0);
- if (err)
- goto fail;
+ if (err) {
+ free_driver(d);
+ s->disks = NULL;
+ return -ENOMEM;
+ }
/* load backing files as necessary */
while ((err = d->drv->td_get_parent_id(d, &id)) == 0) {