diff options
Diffstat (limited to 'tools')
-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) { |