From: Tobias Stoeckmann Date: Wed, 4 Feb 2026 18:15:21 +0000 (+0100) Subject: dmesg: Add release_buffer function X-Git-Tag: v2.43-devel~92^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c1e720992187d21d1a1d9aa2a07c8f8f176145f;p=thirdparty%2Futil-linux.git dmesg: Add release_buffer function The buffer handling is properly split into three functions now: - prepare_buffer - print_buffer - release_buffer Signed-off-by: Tobias Stoeckmann --- diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index 8bfd712e8..85007c2a6 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -742,6 +742,18 @@ static ssize_t prepare_buffer(struct dmesg_control *ctl, char **buf) return n; } +static void release_buffer(struct dmesg_control *ctl, char *buf) +{ + if (!ctl->mmap_buff) + free(buf); + if (ctl->kmsg >= 0) + close(ctl->kmsg); + if (ctl->json && ul_jsonwrt_is_ready(&ctl->jfmt)) { + ul_jsonwrt_array_close(&ctl->jfmt); + ul_jsonwrt_root_close(&ctl->jfmt); + } +} + static int fwrite_hex(const char *buf, size_t size, FILE *out) { size_t i; @@ -1917,14 +1929,7 @@ int main(int argc, char *argv[]) n = prepare_buffer(&ctl, &buf); if (n > 0) print_buffer(&ctl, buf, n); - if (!ctl.mmap_buff) - free(buf); - if (ctl.kmsg >= 0) - close(ctl.kmsg); - if (ctl.json && ul_jsonwrt_is_ready(&ctl.jfmt)) { - ul_jsonwrt_array_close(&ctl.jfmt); - ul_jsonwrt_root_close(&ctl.jfmt); - } + release_buffer(&ctl, buf); if (n < 0) err(EXIT_FAILURE, _("read kernel buffer failed")); else if (ctl.action == SYSLOG_ACTION_READ_CLEAR)