mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2] lib: libfile: Do not ignore errors in close()
@ 2015-08-14 20:31 Andrey Smirnov
  2015-08-14 20:31 ` [PATCH] i2c-imx: Fix memory leak in i2c_fsl_probe() Andrey Smirnov
  2015-08-19 14:24 ` [PATCH v2] lib: libfile: Do not ignore errors in close() Sascha Hauer
  0 siblings, 2 replies; 3+ messages in thread
From: Andrey Smirnov @ 2015-08-14 20:31 UTC (permalink / raw)
  To: barebox; +Cc: Andrey Smirnov

Some character devices may perform meaningful operations in their
implementation of close() -- a good example would be socfpga.c which
checks if the FPGA was programmed succesfully in it's close() method
-- so ignoring return value of this call may cause false positives in
checking exit status for success.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
---
 lib/libfile.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/libfile.c b/lib/libfile.c
index ba03700..a27460c 100644
--- a/lib/libfile.c
+++ b/lib/libfile.c
@@ -262,7 +262,7 @@ int copy_file(const char *src, const char *dst, int verbose)
 	char *rw_buf = NULL;
 	int srcfd = 0, dstfd = 0;
 	int r, w;
-	int ret = 1;
+	int ret = 1, err1 = 0;
 	void *buf;
 	int total = 0;
 	struct stat statbuf;
@@ -326,9 +326,9 @@ out:
 	if (srcfd > 0)
 		close(srcfd);
 	if (dstfd > 0)
-		close(dstfd);
+		err1 = close(dstfd);

-	return ret;
+	return ret ?: err1;
 }
 EXPORT_SYMBOL(copy_file);

--
2.1.4

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] i2c-imx: Fix memory leak in i2c_fsl_probe()
  2015-08-14 20:31 [PATCH v2] lib: libfile: Do not ignore errors in close() Andrey Smirnov
@ 2015-08-14 20:31 ` Andrey Smirnov
  2015-08-19 14:24 ` [PATCH v2] lib: libfile: Do not ignore errors in close() Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Andrey Smirnov @ 2015-08-14 20:31 UTC (permalink / raw)
  To: barebox; +Cc: Andrey Smirnov

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@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

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] lib: libfile: Do not ignore errors in close()
  2015-08-14 20:31 [PATCH v2] lib: libfile: Do not ignore errors in close() Andrey Smirnov
  2015-08-14 20:31 ` [PATCH] i2c-imx: Fix memory leak in i2c_fsl_probe() Andrey Smirnov
@ 2015-08-19 14:24 ` Sascha Hauer
  1 sibling, 0 replies; 3+ messages in thread
From: Sascha Hauer @ 2015-08-19 14:24 UTC (permalink / raw)
  To: Andrey Smirnov; +Cc: barebox

On Fri, Aug 14, 2015 at 01:31:58PM -0700, Andrey Smirnov wrote:
> Some character devices may perform meaningful operations in their
> implementation of close() -- a good example would be socfpga.c which
> checks if the FPGA was programmed succesfully in it's close() method
> -- so ignoring return value of this call may cause false positives in
> checking exit status for success.
> 
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> ---
>  lib/libfile.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Applied, thanks

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-08-19 14:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-14 20:31 [PATCH v2] lib: libfile: Do not ignore errors in close() Andrey Smirnov
2015-08-14 20:31 ` [PATCH] i2c-imx: Fix memory leak in i2c_fsl_probe() Andrey Smirnov
2015-08-19 14:24 ` [PATCH v2] lib: libfile: Do not ignore errors in close() Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox