diff options
author | Jake Wires <jwires@xensource.com> | 2007-02-23 09:40:32 -0800 |
---|---|---|
committer | Jake Wires <jwires@xensource.com> | 2007-02-23 09:40:32 -0800 |
commit | 99a8295b9686e4addbc1469f8eea0014238e9e02 (patch) | |
tree | 6d83cd9c58086e8a359b1ca874424a4542c4a36f /tools/blktap | |
parent | 116cd90796197322ef6c7b9870e210c0d5b38f94 (diff) | |
download | xen-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.c | 7 |
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) { |