FAILED: patch "[PATCH] tty: n_gsm: Fix packet data hex dump output" failed to apply to 5.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 925ea0fa5277c1e6bb9e51955ef34eea9736c3d7 Mon Sep 17 00:00:00 2001
From: Tony Lindgren <[email protected]>
Date: Thu, 12 May 2022 16:15:06 +0300
Subject: [PATCH] tty: n_gsm: Fix packet data hex dump output
The module param debug for n_gsm uses KERN_INFO level, but the hexdump now uses KERN_DEBUG level. This started after commit 091cb0994edd ("lib/hexdump: make print_hex_dump_bytes() a nop on !DEBUG builds"). We now use dynamic_hex_dump() unless DEBUG is set.
This causes no packets to be seen with modprobe n_gsm debug=0x1f unlike earlier. Let's fix this by adding gsm_hex_dump_bytes() that calls print_hex_dump() with KERN_INFO to match what n_gsm is doing with the other debug related output.
drivers/tty/n_gsm.c +23 -8
@@ -444,6 +444,25 @@ static u8 gsm_encode_modem(const struct gsm_dlci *dlci)return modembits; } +static void gsm_hex_dump_bytes (const char *fname,const u8 *data, +unsigned long len) +{ +char *prefix; + +if (!fname) { +print_hex_dump (KERN_INFO ,"" ,DUMP_PREFIX_NONE ,16 ,1 , data, len, + true); +return ; + } + + prefix =kasprintf (GFP_KERNEL ,"%s: " , fname); +if (!prefix) +return ; +print_hex_dump (KERN_INFO , prefix,DUMP_PREFIX_OFFSET ,16 ,1 , data, len, + true); +kfree (prefix); +} +/** * gsm_print_packet - display a frame for debug * @hdr: header to print before decode
@@ -508,7 +527,7 @@ static void gsm_print_packet(const char *hdr, int addr, int cr,else pr_cont ("(F)" ); -print_hex_dump_bytes ("" ,DUMP_PREFIX_NONE , data, dlen); +gsm_hex_dump_bytes (NULL , data, dlen); }
@@ -698,9 +717,7 @@ static void gsm_data_kick(struct gsm_mux *gsm, struct gsm_dlci *dlci) }if (debug &4 ) -print_hex_dump_bytes ("gsm_data_kick: " , -DUMP_PREFIX_OFFSET , - gsm->txframe, len); +gsm_hex_dump_bytes (__func__, gsm->txframe, len);if (gsmld_output (gsm, gsm->txframe, len) <=0 )break ;/* FIXME: Can eliminate one SOF in many more cases */
@@ -2444,8 +2461,7 @@ static int gsmld_output(struct gsm_mux *gsm, u8 *data, int len)return -ENOSPC ; }if (debug &4 ) -print_hex_dump_bytes ("gsmld_output: " ,DUMP_PREFIX_OFFSET , - data, len); +gsm_hex_dump_bytes (__func__, data, len);return gsm->tty->ops->write (gsm->tty, data, len); }
@@ -2521,8 +2537,7 @@ static void gsmld_receive_buf(struct tty_struct *tty, const unsigned char *cp,char flags =TTY_NORMAL ;if (debug &4 ) -print_hex_dump_bytes ("gsmld_receive: " ,DUMP_PREFIX_OFFSET , - cp, count); +gsm_hex_dump_bytes (__func__, cp, count);for (; count; count--, cp++) {if (fp)