From: Ilya Dryomov Date: Mon, 31 Aug 2015 12:21:39 +0000 (+0300) Subject: rbd: fix double free on rbd_dev->header_name X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=3ebe138ac642a195c7f2efdb918f464734421fd6;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git rbd: fix double free on rbd_dev->header_name If rbd_dev_image_probe() in rbd_dev_probe_parent() fails, header_name is freed twice: once in rbd_dev_probe_parent() and then in its caller rbd_dev_image_probe() (rbd_dev_image_probe() is called recursively to handle parent images). rbd_dev_probe_parent() is responsible for probing the parent, so it shouldn't muck with clone's fields. Signed-off-by: Ilya Dryomov Reviewed-by: Alex Elder --- diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index bc67a93aa4f4..324bf35ec4dd 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -5201,7 +5201,6 @@ static int rbd_dev_probe_parent(struct rbd_device *rbd_dev) out_err: if (parent) { rbd_dev_unparent(rbd_dev); - kfree(rbd_dev->header_name); rbd_dev_destroy(parent); } else { rbd_put_client(rbdc);