[PATCH v2] tools/counter: Close fd when exit

zhangjiao2 posted 1 patch 1 year, 3 months ago
tools/counter/counter_example.c | 5 +++++
1 file changed, 5 insertions(+)
[PATCH v2] tools/counter: Close fd when exit
Posted by zhangjiao2 1 year, 3 months ago
From: zhang jiao <zhangjiao2@cmss.chinamobile.com>

Since fd is not used in the messaging it's better to 
close it before printing anything. Ditto for other cases.

Signed-off-by: zhang jiao <zhangjiao2@cmss.chinamobile.com>
---
v1->v2:
	Close fd before fprintf.

 tools/counter/counter_example.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tools/counter/counter_example.c b/tools/counter/counter_example.c
index be55287b950f..37569208c235 100644
--- a/tools/counter/counter_example.c
+++ b/tools/counter/counter_example.c
@@ -57,12 +57,14 @@ int main(void)
 		if (ret == -1) {
+			close(fd);
 			fprintf(stderr, "Error adding watches[%d]: %s\n", i,
 				strerror(errno));
 			return 1;
 		}
 	}
 	ret = ioctl(fd, COUNTER_ENABLE_EVENTS_IOCTL);
 	if (ret == -1) {
+		close(fd);
 		perror("Error enabling events");
 		return 1;
 	}
 
@@ -70,11 +72,13 @@ int main(void)
 		ret = read(fd, event_data, sizeof(event_data));
 		if (ret == -1) {
+			close(fd);
 			perror("Failed to read event data");
 			return 1;
 		}
 
 		if (ret != sizeof(event_data)) {
+			close(fd);
 			fprintf(stderr, "Failed to read event data\n");
 			return -EIO;
 		}
 
@@ -88,5 +92,6 @@ int main(void)
 		       strerror(event_data[1].status));
 	}
 
+	close(fd);
 	return 0;
 }
-- 
2.33.0
Re: [PATCH v2] tools/counter: Close fd when exit
Posted by William Breathitt Gray 1 year, 2 months ago
On Wed, Sep 04, 2024 at 09:42:53AM +0800, zhangjiao2 wrote:
> From: zhang jiao <zhangjiao2@cmss.chinamobile.com>
> 
> Since fd is not used in the messaging it's better to 
> close it before printing anything. Ditto for other cases.
> 
> Signed-off-by: zhang jiao <zhangjiao2@cmss.chinamobile.com>

Hello zhang,

I appreciate you for submitting this patch. Before I can accept it, I
need to understand the reason for it.

Previously counter_example.c did call close() before returning, but as
David Laight pointed out, we removed it for being redundant when the
kernel closes file descriptors on exit, as well as possibly changing
errno before perror() and strerror() are called.

Is this patch made to address a particular bug you have discovered? I
would like to document the rationale for this change in the commit
message so we properly understand the reason for calling close() here.

Sincerely,

William Breathitt Gray
Re: [PATCH v2] tools/counter: Close fd when exit
Posted by Andy Shevchenko 1 year, 3 months ago
On Wed, Sep 4, 2024 at 4:42 AM zhangjiao2
<zhangjiao2@cmss.chinamobile.com> wrote:

> Since fd is not used in the messaging it's better to
> close it before printing anything.

It was my comment which you addressed. Thanks for that.
But it does not explain what the problem is.

-- 
With Best Regards,
Andy Shevchenko