Commit 5655c4d9 authored by Alex Elder's avatar Alex Elder Committed by Sage Weil

rbd: fix image id leak in initial probe

If a format 2 image id is found for an image being mapped, but the
subsequent probe of the image fails, rbd_dev_probe() quits without
freeing the image id.  Fix that.

Also drop a redundant hunk of code in rbd_dev_image_id().
Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent c0fba368
...@@ -4800,16 +4800,20 @@ static int rbd_dev_probe(struct rbd_device *rbd_dev) ...@@ -4800,16 +4800,20 @@ static int rbd_dev_probe(struct rbd_device *rbd_dev)
ret = rbd_dev_v1_probe(rbd_dev); ret = rbd_dev_v1_probe(rbd_dev);
else else
ret = rbd_dev_v2_probe(rbd_dev); ret = rbd_dev_v2_probe(rbd_dev);
if (ret) { if (ret)
dout("probe failed, returning %d\n", ret); goto out_err;
return ret;
}
ret = rbd_dev_probe_finish(rbd_dev); ret = rbd_dev_probe_finish(rbd_dev);
if (ret) if (ret)
rbd_header_free(&rbd_dev->header); rbd_header_free(&rbd_dev->header);
return ret;
out_err:
kfree(rbd_dev->spec->image_id);
rbd_dev->spec->image_id = NULL;
dout("probe failed, returning %d\n", ret);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment