From 6de94eb8212bcfed616e4e8958e2a31ddbb94c50 Mon Sep 17 00:00:00 2001 From: Arshad Hussain Date: Fri, 8 Mar 2024 15:42:26 +0530 Subject: [PATCH] LU-17000 utils: Fix do_warn_interval resource leak In function do_warn_interval 'fd' opened was not closed in case write() returned error. This leak is fixed by calling close() before returning This patch also checks the return from futimens() and logs an error in case it fails CoverityID: 415056 ("Resource leak") Fixes: a454c9efd8 (LU-17137 utils: Deprecate l_getidentity 'files' alias) Signed-off-by: Arshad Hussain Change-Id: Ice0269d524e237a4fc421b2a91d8f26b5e41b13f Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54330 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Timothy Day Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger --- lustre/utils/l_getidentity.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lustre/utils/l_getidentity.c b/lustre/utils/l_getidentity.c index 30bb186..3c76c85 100644 --- a/lustre/utils/l_getidentity.c +++ b/lustre/utils/l_getidentity.c @@ -763,6 +763,7 @@ static void do_warn_interval(struct timeval *now) write_warning = true; } else { show_warning = (now->tv_sec - sbuf.st_mtim.tv_sec) > ONE_DAY; + write_warning = sbuf.st_size == 0; /* file still empty? */ } if (write_warning || show_warning) { @@ -782,13 +783,17 @@ static void do_warn_interval(struct timeval *now) /* unlikely, but rate-limiting may be broken */ if (written <= 0) - return; + goto out_close; } errlog("WARNING: %s", msg); /* rate limiting is working */ if (show_warning) - futimens(fd, times); + if (futimens(fd, times) < 0) + errlog("Change Timestamp failed: %s\n", + strerror(errno)); +out_close: + close(fd); } } -- 1.8.3.1