summaryrefslogtreecommitdiff
path: root/lib/zlog.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2021-04-19 05:41:35 +0200
committerDavid Lamparter <equinox@diac24.net>2021-04-19 05:47:09 +0200
commit4b4935bbc238186b07c365ccd32751af9f02921c (patch)
treed729f85670f68bbfb0e5eeee531e0c492dd027b9 /lib/zlog.c
parent5be4799dc5f16049ecb7a681974e69a7cbe415b9 (diff)
lib: fix bogus unlinkat() warning in zlog TLS exit
Only try to unlink the buffer if we actually set it up beforehand... Signed-off-by: David Lamparter <equinox@diac24.net>
Diffstat (limited to 'lib/zlog.c')
-rw-r--r--lib/zlog.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/zlog.c b/lib/zlog.c
index f546709328..24800c6e64 100644
--- a/lib/zlog.c
+++ b/lib/zlog.c
@@ -142,6 +142,7 @@ struct zlog_msg {
struct zlog_tls {
char *mmbuf;
size_t bufpos;
+ bool do_unlink;
size_t nmsgs;
struct zlog_msg msgs[TLS_LOG_MAXMSG];
@@ -266,13 +267,14 @@ void zlog_tls_buffer_init(void)
mmpath, strerror(errno));
goto out_anon_unlink;
}
+ zlog_tls->do_unlink = true;
close(mmfd);
zlog_tls_set(zlog_tls);
return;
out_anon_unlink:
- unlink(mmpath);
+ unlinkat(zlog_tmpdirfd, mmpath, 0);
close(mmfd);
out_anon:
@@ -296,14 +298,16 @@ out_anon:
void zlog_tls_buffer_fini(void)
{
char mmpath[MAXPATHLEN];
+ struct zlog_tls *zlog_tls = zlog_tls_get();
+ bool do_unlink = zlog_tls ? zlog_tls->do_unlink : false;
zlog_tls_buffer_flush();
- zlog_tls_free(zlog_tls_get());
+ zlog_tls_free(zlog_tls);
zlog_tls_set(NULL);
snprintfrr(mmpath, sizeof(mmpath), "logbuf.%ld", zlog_gettid());
- if (unlinkat(zlog_tmpdirfd, mmpath, 0))
+ if (do_unlink && unlinkat(zlog_tmpdirfd, mmpath, 0))
zlog_err("unlink logbuf: %s (%d)", strerror(errno), errno);
}