The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=43b5a264c6f665ac451102d828a8f51307efe626
commit 43b5a264c6f665ac451102d828a8f51307efe626 Author: Jean-Sébastien Pédron <[email protected]> AuthorDate: 2025-08-09 10:28:27 +0000 Commit: Jean-Sébastien Pédron <[email protected]> CommitDate: 2026-01-04 09:45:19 +0000 linuxkpi: Add option to skip trailing newline in `lkpi_hex_dump()` This will be useful in the upcoming implementation of `hex_dump_to_buffer()` which doesn't add one. Reviewed by: bz, emaste Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51844 --- sys/compat/linuxkpi/common/include/linux/printk.h | 4 ++-- sys/compat/linuxkpi/common/include/linux/seq_file.h | 2 +- sys/compat/linuxkpi/common/src/linux_compat.c | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/printk.h b/sys/compat/linuxkpi/common/include/linux/printk.h index d2d197682782..e10656c8a1d0 100644 --- a/sys/compat/linuxkpi/common/include/linux/printk.h +++ b/sys/compat/linuxkpi/common/include/linux/printk.h @@ -48,7 +48,7 @@ int __lkpi_hexdump_printf(void *, const char *, ...) __printflike(2, 3); void lkpi_hex_dump(int(*)(void *, const char *, ...), void *arg1, const char *, const char *, const int, const int, const int, - const void *, size_t, const bool); + const void *, size_t, const bool, const bool); static inline void print_hex_dump(const char *level, const char *prefix_str, @@ -56,7 +56,7 @@ print_hex_dump(const char *level, const char *prefix_str, const void *buf, size_t len, const bool ascii) { lkpi_hex_dump(__lkpi_hexdump_printf, NULL, level, prefix_str, prefix_type, - rowsize, groupsize, buf, len, ascii); + rowsize, groupsize, buf, len, ascii, true); } static inline void diff --git a/sys/compat/linuxkpi/common/include/linux/seq_file.h b/sys/compat/linuxkpi/common/include/linux/seq_file.h index 47da16ab8688..3c7862890c67 100644 --- a/sys/compat/linuxkpi/common/include/linux/seq_file.h +++ b/sys/compat/linuxkpi/common/include/linux/seq_file.h @@ -115,7 +115,7 @@ seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type, int rowsize, int groupsize, const void *buf, size_t len, bool ascii) { lkpi_hex_dump(__lkpi_hexdump_sbuf_printf, m->buf, NULL, prefix_str, prefix_type, - rowsize, groupsize, buf, len, ascii); + rowsize, groupsize, buf, len, ascii, true); } #define file linux_file diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c index 03d866260dd9..c2bad1f28eaf 100644 --- a/sys/compat/linuxkpi/common/src/linux_compat.c +++ b/sys/compat/linuxkpi/common/src/linux_compat.c @@ -1894,7 +1894,7 @@ void lkpi_hex_dump(int(*_fpf)(void *, const char *, ...), void *arg1, const char *level, const char *prefix_str, const int prefix_type, const int rowsize, const int groupsize, - const void *buf, size_t len, const bool ascii) + const void *buf, size_t len, const bool ascii, const bool trailing_newline) { typedef const struct { long long value; } __packed *print_64p_t; typedef const struct { uint32_t value; } __packed *print_32p_t; @@ -1978,9 +1978,11 @@ lkpi_hex_dump(int(*_fpf)(void *, const char *, ...), void *arg1, break; } } - ret = _fpf(arg1, "\n"); - if (ret < 0) - break; + if (len > 0 && trailing_newline) { + ret = _fpf(arg1, "\n"); + if (ret < 0) + break; + } } }
