public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] selftests: net: fix resource leak  in napi_id_helper.c
@ 2025-06-25 15:33 Malaya Kumar Rout
  2025-06-26  8:35 ` Simon Horman
  0 siblings, 1 reply; 7+ messages in thread
From: Malaya Kumar Rout @ 2025-06-25 15:33 UTC (permalink / raw)
  To: malayarout91
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Shuah Khan, netdev, linux-kselftest, linux-kernel

Resolve minor resource leaks reported by cppcheck in napi_id_helper.c

cppcheck output before this patch:
tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]

cppcheck output after this patch:
No resource leaks found

Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>
---
 tools/testing/selftests/drivers/net/napi_id_helper.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
index eecd610c2109..1441b8d49b91 100644
--- a/tools/testing/selftests/drivers/net/napi_id_helper.c
+++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
@@ -34,6 +34,7 @@ int main(int argc, char *argv[])
 
 	if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
 		perror("setsockopt");
+		close(server);
 		return 1;
 	}
 
@@ -43,11 +44,13 @@ int main(int argc, char *argv[])
 
 	if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) {
 		perror("bind failed");
+		close(server);
 		return 1;
 	}
 
 	if (listen(server, 1) < 0) {
 		perror("listen");
+		close(server);
 		return 1;
 	}
 
@@ -56,6 +59,7 @@ int main(int argc, char *argv[])
 	client = accept(server, NULL, 0);
 	if (client < 0) {
 		perror("accept");
+		close(server);
 		return 1;
 	}
 
@@ -64,6 +68,7 @@ int main(int argc, char *argv[])
 			 &optlen);
 	if (ret != 0) {
 		perror("getsockopt");
+		close(server);
 		return 1;
 	}
 
@@ -73,6 +78,7 @@ int main(int argc, char *argv[])
 
 	if (napi_id == 0) {
 		fprintf(stderr, "napi ID is 0\n");
+		close(server);
 		return 1;
 	}
 
-- 
2.43.0


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

* Re: [PATCH] selftests: net: fix resource leak  in napi_id_helper.c
  2025-06-25 15:33 [PATCH] selftests: net: fix resource leak in napi_id_helper.c Malaya Kumar Rout
@ 2025-06-26  8:35 ` Simon Horman
  2025-06-28  8:19   ` [PATCH v2] " Malaya Kumar Rout
  0 siblings, 1 reply; 7+ messages in thread
From: Simon Horman @ 2025-06-26  8:35 UTC (permalink / raw)
  To: Malaya Kumar Rout
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Shuah Khan, netdev, linux-kselftest, linux-kernel

On Wed, Jun 25, 2025 at 09:03:07PM +0530, Malaya Kumar Rout wrote:
> Resolve minor resource leaks reported by cppcheck in napi_id_helper.c
> 
> cppcheck output before this patch:
> tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]
> 
> cppcheck output after this patch:
> No resource leaks found
> 
> Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>

Thanks,

I agree that it is nice to address these warnings.
But for completeness doesn't client also need to be closed
if an error occurs after it is accepted?

Also, I'd suggest using a ladder of goto labels for error handling,
as is common in (Neworking?) kernel code.

E.g. (compile tested only!!)

diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
index eecd610c2109..105517dc315d 100644
--- a/tools/testing/selftests/drivers/net/napi_id_helper.c
+++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
@@ -34,7 +34,7 @@ int main(int argc, char *argv[])
 
 	if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
 		perror("setsockopt");
-		return 1;
+		goto err_close_server;
 	}
 
 	address.sin_family = AF_INET;
@@ -43,12 +43,12 @@ int main(int argc, char *argv[])
 
 	if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) {
 		perror("bind failed");
-		return 1;
+		goto err_close_server;
 	}
 
 	if (listen(server, 1) < 0) {
 		perror("listen");
-		return 1;
+		goto err_close_server;
 	}
 
 	ksft_ready();
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
 	client = accept(server, NULL, 0);
 	if (client < 0) {
 		perror("accept");
-		return 1;
+		goto err_close_server;
 	}
 
 	optlen = sizeof(napi_id);
@@ -64,7 +64,7 @@ int main(int argc, char *argv[])
 			 &optlen);
 	if (ret != 0) {
 		perror("getsockopt");
-		return 1;
+		goto err_close_client;
 	}
 
 	read(client, buf, 1024);
@@ -73,11 +73,17 @@ int main(int argc, char *argv[])
 
 	if (napi_id == 0) {
 		fprintf(stderr, "napi ID is 0\n");
-		return 1;
+		goto err_close_client;
 	}
 
 	close(client);
 	close(server);
 
 	return 0;
+
+err_close_client:
+	close(client);
+err_close_server:
+	close(server);
+	return 1;
 }

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

* [PATCH v2] selftests: net: fix resource leak  in napi_id_helper.c
  2025-06-26  8:35 ` Simon Horman
@ 2025-06-28  8:19   ` Malaya Kumar Rout
  2025-06-28  8:44     ` Eric Dumazet
  0 siblings, 1 reply; 7+ messages in thread
From: Malaya Kumar Rout @ 2025-06-28  8:19 UTC (permalink / raw)
  To: horms
  Cc: Malaya Kumar Rout, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Shuah Khan, netdev, linux-kselftest,
	linux-kernel

Resolve minor resource leaks reported by cppcheck in napi_id_helper.c

cppcheck output before this patch:
tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]

cppcheck output after this patch:
No resource leaks found

Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>
---
 .../selftests/drivers/net/napi_id_helper.c    | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
index eecd610c2109..47dd3291bd55 100644
--- a/tools/testing/selftests/drivers/net/napi_id_helper.c
+++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
@@ -34,7 +34,7 @@ int main(int argc, char *argv[])
 
 	if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
 		perror("setsockopt");
-		return 1;
+		goto failure;
 	}
 
 	address.sin_family = AF_INET;
@@ -43,12 +43,12 @@ int main(int argc, char *argv[])
 
 	if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) {
 		perror("bind failed");
-		return 1;
+		goto failure;
 	}
 
 	if (listen(server, 1) < 0) {
 		perror("listen");
-		return 1;
+		goto failure;
 	}
 
 	ksft_ready();
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
 	client = accept(server, NULL, 0);
 	if (client < 0) {
 		perror("accept");
-		return 1;
+		goto failure;
 	}
 
 	optlen = sizeof(napi_id);
@@ -64,7 +64,7 @@ int main(int argc, char *argv[])
 			 &optlen);
 	if (ret != 0) {
 		perror("getsockopt");
-		return 1;
+		goto failure;
 	}
 
 	read(client, buf, 1024);
@@ -73,11 +73,18 @@ int main(int argc, char *argv[])
 
 	if (napi_id == 0) {
 		fprintf(stderr, "napi ID is 0\n");
-		return 1;
+		goto failure;
 	}
 
 	close(client);
 	close(server);
 
 	return 0;
+
+failure:
+	if (client >= 0)
+		close(client);
+	if (server >= 0)
+		close(server);
+	return 1;
 }
-- 
2.43.0


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

* Re: [PATCH v2] selftests: net: fix resource leak in napi_id_helper.c
  2025-06-28  8:19   ` [PATCH v2] " Malaya Kumar Rout
@ 2025-06-28  8:44     ` Eric Dumazet
  2025-06-28  9:09       ` malaya kumar rout
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Dumazet @ 2025-06-28  8:44 UTC (permalink / raw)
  To: Malaya Kumar Rout
  Cc: horms, Andrew Lunn, David S. Miller, Jakub Kicinski, Paolo Abeni,
	Shuah Khan, netdev, linux-kselftest, linux-kernel

On Sat, Jun 28, 2025 at 1:19 AM Malaya Kumar Rout
<malayarout91@gmail.com> wrote:
>
> Resolve minor resource leaks reported by cppcheck in napi_id_helper.c
>
> cppcheck output before this patch:
> tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]
>
> cppcheck output after this patch:
> No resource leaks found
>
> Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>
> ---
>  .../selftests/drivers/net/napi_id_helper.c    | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
> index eecd610c2109..47dd3291bd55 100644
> --- a/tools/testing/selftests/drivers/net/napi_id_helper.c
> +++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
> @@ -34,7 +34,7 @@ int main(int argc, char *argv[])
>
>         if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
>                 perror("setsockopt");
> -               return 1;
> +               goto failure;

client variable is uninitialized at this point.

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

* Re: [PATCH v2] selftests: net: fix resource leak in napi_id_helper.c
  2025-06-28  8:44     ` Eric Dumazet
@ 2025-06-28  9:09       ` malaya kumar rout
  2025-06-30 18:36         ` [PATCH v3] " Malaya Kumar Rout
  0 siblings, 1 reply; 7+ messages in thread
From: malaya kumar rout @ 2025-06-28  9:09 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: horms, Andrew Lunn, David S. Miller, Jakub Kicinski, Paolo Abeni,
	Shuah Khan, netdev, linux-kselftest, linux-kernel

On Sat, Jun 28, 2025 at 2:15 PM Eric Dumazet <edumazet@google.com> wrote:
>
> On Sat, Jun 28, 2025 at 1:19 AM Malaya Kumar Rout
> <malayarout91@gmail.com> wrote:
> >
> > Resolve minor resource leaks reported by cppcheck in napi_id_helper.c
> >
> > cppcheck output before this patch:
> > tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
> > tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
> > tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
> > tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
> > tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
> > tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]
> >
> > cppcheck output after this patch:
> > No resource leaks found
> >
> > Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>
> > ---
> >  .../selftests/drivers/net/napi_id_helper.c    | 19 +++++++++++++------
> >  1 file changed, 13 insertions(+), 6 deletions(-)
> >
> > diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
> > index eecd610c2109..47dd3291bd55 100644
> > --- a/tools/testing/selftests/drivers/net/napi_id_helper.c
> > +++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
> > @@ -34,7 +34,7 @@ int main(int argc, char *argv[])
> >
> >         if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
> >                 perror("setsockopt");
> > -               return 1;
> > +               goto failure;
>
> client variable is uninitialized at this point.

I sincerely appreciate your prompt review and for identifying the
variable initialization issue. If you are agreeable to initializing
both the server and client to -1, I will proceed to share the updated
patch.

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

* [PATCH v3] selftests: net: fix resource leak  in napi_id_helper.c
  2025-06-28  9:09       ` malaya kumar rout
@ 2025-06-30 18:36         ` Malaya Kumar Rout
  2025-07-03  9:47           ` Paolo Abeni
  0 siblings, 1 reply; 7+ messages in thread
From: Malaya Kumar Rout @ 2025-06-30 18:36 UTC (permalink / raw)
  To: edumazet
  Cc: Malaya Kumar Rout, Andrew Lunn, David S. Miller, Jakub Kicinski,
	Paolo Abeni, Shuah Khan, netdev, linux-kselftest, linux-kernel

Resolve minor resource leaks reported by cppcheck in napi_id_helper.c

cppcheck output before this patch:
tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]

cppcheck output after this patch:
No resource leaks found

Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>
---
 .../selftests/drivers/net/napi_id_helper.c    | 23 ++++++++++++-------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/testing/selftests/drivers/net/napi_id_helper.c
index eecd610c2109..5581d04e180f 100644
--- a/tools/testing/selftests/drivers/net/napi_id_helper.c
+++ b/tools/testing/selftests/drivers/net/napi_id_helper.c
@@ -18,8 +18,8 @@ int main(int argc, char *argv[])
 	socklen_t optlen;
 	char buf[1024];
 	int opt = 1;
-	int server;
-	int client;
+	int server = -1;
+	int client = -1;
 	int ret;
 
 	server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
@@ -34,7 +34,7 @@ int main(int argc, char *argv[])
 
 	if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
 		perror("setsockopt");
-		return 1;
+		goto failure;
 	}
 
 	address.sin_family = AF_INET;
@@ -43,12 +43,12 @@ int main(int argc, char *argv[])
 
 	if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) {
 		perror("bind failed");
-		return 1;
+		goto failure;
 	}
 
 	if (listen(server, 1) < 0) {
 		perror("listen");
-		return 1;
+		goto failure;
 	}
 
 	ksft_ready();
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
 	client = accept(server, NULL, 0);
 	if (client < 0) {
 		perror("accept");
-		return 1;
+		goto failure;
 	}
 
 	optlen = sizeof(napi_id);
@@ -64,7 +64,7 @@ int main(int argc, char *argv[])
 			 &optlen);
 	if (ret != 0) {
 		perror("getsockopt");
-		return 1;
+		goto failure;
 	}
 
 	read(client, buf, 1024);
@@ -73,11 +73,18 @@ int main(int argc, char *argv[])
 
 	if (napi_id == 0) {
 		fprintf(stderr, "napi ID is 0\n");
-		return 1;
+		goto failure;
 	}
 
 	close(client);
 	close(server);
 
 	return 0;
+
+failure:
+	if (client >= 0)
+		close(client);
+	if (server >= 0)
+		close(server);
+	return 1;
 }
-- 
2.43.0


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

* Re: [PATCH v3] selftests: net: fix resource leak in napi_id_helper.c
  2025-06-30 18:36         ` [PATCH v3] " Malaya Kumar Rout
@ 2025-07-03  9:47           ` Paolo Abeni
  0 siblings, 0 replies; 7+ messages in thread
From: Paolo Abeni @ 2025-07-03  9:47 UTC (permalink / raw)
  To: Malaya Kumar Rout, edumazet
  Cc: Andrew Lunn, David S. Miller, Jakub Kicinski, Shuah Khan, netdev,
	linux-kselftest, linux-kernel

On 6/30/25 8:36 PM, Malaya Kumar Rout wrote:
> Resolve minor resource leaks reported by cppcheck in napi_id_helper.c
> 
> cppcheck output before this patch:
> tools/testing/selftests/drivers/net/napi_id_helper.c:37:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:46:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:51:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:59:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:67:3: error: Resource leak: server [resourceLeak]
> tools/testing/selftests/drivers/net/napi_id_helper.c:76:3: error: Resource leak: server [resourceLeak]
> 
> cppcheck output after this patch:
> No resource leaks found
> 
> Signed-off-by: Malaya Kumar Rout <malayarout91@gmail.com>

Lacks fixes tag and a target tree ('net') in the subj prefix, but please
do not resubmit, as there is no resource leak even without this patch as
the kernel will close anyway all the open file descriptor at process exit.

/P


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

end of thread, other threads:[~2025-07-03  9:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-25 15:33 [PATCH] selftests: net: fix resource leak in napi_id_helper.c Malaya Kumar Rout
2025-06-26  8:35 ` Simon Horman
2025-06-28  8:19   ` [PATCH v2] " Malaya Kumar Rout
2025-06-28  8:44     ` Eric Dumazet
2025-06-28  9:09       ` malaya kumar rout
2025-06-30 18:36         ` [PATCH v3] " Malaya Kumar Rout
2025-07-03  9:47           ` Paolo Abeni

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