From: Arshad Hussain Date: Fri, 8 Mar 2024 10:12:26 +0000 (+0530) Subject: LU-17000 utils: Fix do_warn_interval resource leak X-Git-Tag: 2.15.63~46 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F30%2F54330%2F8;p=fs%2Flustre-release.git 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 --- 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); } }