diff mbox series

[v2] tools/counter: Close fd when exit

Message ID 20240904014253.2435-1-zhangjiao2@cmss.chinamobile.com (mailing list archive)
State Handled Elsewhere
Headers show
Series [v2] tools/counter: Close fd when exit | expand

Commit Message

zhangjiao2 Sept. 4, 2024, 1:42 a.m. UTC
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(+)

Comments

Andy Shevchenko Sept. 4, 2024, 7:35 a.m. UTC | #1
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.
William Breathitt Gray Sept. 29, 2024, 10:02 a.m. UTC | #2
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
diff mbox series

Patch

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;
 }