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;
+               }
        }
 }
 

Reply via email to