diff mbox series

selftests/timens: Add fclose(proc) to prevent memory leaks

Message ID 20241128060512.3948-1-liujing@cmss.chinamobile.com
State New
Headers show
Series selftests/timens: Add fclose(proc) to prevent memory leaks | expand

Commit Message

liujing Nov. 28, 2024, 6:05 a.m. UTC
If fopen succeeds, the fscanf function is called to read the data.
Regardless of whether fscanf is successful, you need to run
fclose(proc) to prevent memory leaks.

Signed-off-by: liujing <liujing@cmss.chinamobile.com>

Comments

Shuah Khan Dec. 4, 2024, 11:09 p.m. UTC | #1
On 11/27/24 23:05, liujing wrote:
> If fopen succeeds, the fscanf function is called to read the data.
> Regardless of whether fscanf is successful, you need to run
> fclose(proc) to prevent memory leaks.
> 
> Signed-off-by: liujing <liujing@cmss.chinamobile.com>
> 
> diff --git a/tools/testing/selftests/timens/procfs.c b/tools/testing/selftests/timens/procfs.c
> index 1833ca97eb24..e47844a73c31 100644
> --- a/tools/testing/selftests/timens/procfs.c
> +++ b/tools/testing/selftests/timens/procfs.c
> @@ -79,9 +79,11 @@ static int read_proc_uptime(struct timespec *uptime)
>   	if (fscanf(proc, "%lu.%02lu", &up_sec, &up_nsec) != 2) {
>   		if (errno) {
>   			pr_perror("fscanf");
> +			fclose(proc);
>   			return -errno;
>   		}
>   		pr_err("failed to parse /proc/uptime");
> +		fclose(proc);
>   		return -1;
>   	}
>   	fclose(proc);

How did you find this problem? This file will be closed when
test exits? What does strace show you?

thanks,
-- Shuah
diff mbox series

Patch

diff --git a/tools/testing/selftests/timens/procfs.c b/tools/testing/selftests/timens/procfs.c
index 1833ca97eb24..e47844a73c31 100644
--- a/tools/testing/selftests/timens/procfs.c
+++ b/tools/testing/selftests/timens/procfs.c
@@ -79,9 +79,11 @@  static int read_proc_uptime(struct timespec *uptime)
 	if (fscanf(proc, "%lu.%02lu", &up_sec, &up_nsec) != 2) {
 		if (errno) {
 			pr_perror("fscanf");
+			fclose(proc);
 			return -errno;
 		}
 		pr_err("failed to parse /proc/uptime");
+		fclose(proc);
 		return -1;
 	}
 	fclose(proc);