[PATCH] i2c-imx: Fix memory leak in i2c_fsl_probe()
Andrey Smirnov
andrew.smirnov at gmail.com
Fri Aug 14 13:31:59 PDT 2015
All points of failure in the code of i2c_fsl_probe() happen after the
allocation of i2c_fsl, so all of them have to perform necessary
cleanup setups in case of failure.
Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>
---
drivers/i2c/busses/i2c-imx.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 714e83c..4cd03e1 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -539,8 +539,10 @@ static int __init i2c_fsl_probe(struct device_d *pdev)
#ifdef CONFIG_COMMON_CLK
i2c_fsl->clk = clk_get(pdev, NULL);
- if (IS_ERR(i2c_fsl->clk))
- return PTR_ERR(i2c_fsl->clk);
+ if (IS_ERR(i2c_fsl->clk)) {
+ ret = PTR_ERR(i2c_fsl->clk);
+ goto fail;
+ }
#endif
/* Setup i2c_fsl driver structure */
i2c_fsl->adapter.master_xfer = i2c_fsl_xfer;
@@ -548,8 +550,10 @@ static int __init i2c_fsl_probe(struct device_d *pdev)
i2c_fsl->adapter.dev.parent = pdev;
i2c_fsl->adapter.dev.device_node = pdev->device_node;
i2c_fsl->base = dev_request_mem_region(pdev, 0);
- if (IS_ERR(i2c_fsl->base))
- return PTR_ERR(i2c_fsl->base);
+ if (IS_ERR(i2c_fsl->base)) {
+ ret = PTR_ERR(i2c_fsl->base);
+ goto fail;
+ }
i2c_fsl->dfsrr = -1;
--
2.1.4
More information about the barebox
mailing list