diff options
| author | David Lamparter <equinox@diac24.net> | 2021-04-19 05:41:35 +0200 |
|---|---|---|
| committer | David Lamparter <equinox@diac24.net> | 2021-04-19 05:47:09 +0200 |
| commit | 4b4935bbc238186b07c365ccd32751af9f02921c (patch) | |
| tree | d729f85670f68bbfb0e5eeee531e0c492dd027b9 /lib/zlog.c | |
| parent | 5be4799dc5f16049ecb7a681974e69a7cbe415b9 (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.c | 10 |
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); } |
