Check clock-enable failures after a manually managed allocation. Release the earlier allocation and return the original clock error when probe cannot enable the clock.
Signed-off-by: jiawen <[email protected]> --- diff --git a/drivers/gpu/ipu-v3/ipu-pre.c b/drivers/gpu/ipu-v3/ipu-pre.c --- a/drivers/gpu/ipu-v3/ipu-pre.c +++ b/drivers/gpu/ipu-v3/ipu-pre.c @@ -311,6 +311,7 @@ { struct device *dev = &pdev->dev; struct ipu_pre *pre; + int ret; pre = devm_kzalloc(dev, sizeof(*pre), GFP_KERNEL); if (!pre) @@ -339,7 +340,12 @@ if (!pre->buffer_virt) return -ENOMEM; - clk_prepare_enable(pre->clk_axi); + ret = clk_prepare_enable(pre->clk_axi); + if (ret) { + gen_pool_free(pre->iram, (unsigned long)pre->buffer_virt, + IPU_PRE_MAX_WIDTH * IPU_PRE_NUM_SCANLINES * 4); + return ret; + } pre->dev = dev; platform_set_drvdata(pdev, pre);
