On Wed, 2014-09-17 at 14:07 -0500, Steve French wrote: > Do you have a sample for what the output change looks like? > Just for some random data (only dumps) on x86_64. cifs_dump_mem(): [ 13.842342] 00000000: a0000222 ffffffff a0000282 ffffffff "............... [ 13.850140] 00000010: 00000001 00000000 a000028f ffffffff ................ [ 13.857930] 00000020: 00000009 00000000 a00002a2 ffffffff ................ [ 13.865726] 00000030: 00000021 00000000 00000000 00000000 !............... dump_smb(): [ 14.859103] 0222 a000 ffff ffff 0282 a000 ffff ffff "............... [ 14.866313] 0001 0000 0000 0000 028f a000 ffff ffff ................ [ 14.873528] 0009 0000 0000 0000 02a2 a000 ffff ffff ................ [ 14.880736] 0021 0000 0000 0000 0000 0000 0000 0000 !............... > On Wed, Aug 27, 2014 at 8:49 AM, Andy Shevchenko > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > This patch converts custom dumper to use native print_hex_dump() instead. The > > cifs_dump_mem() will have an offsets per each line which differs it from the > > original code. > > > > In the dump_smb() we may use native print_hex_dump() as well. It will show > > slightly different output in ASCII part when character is unprintable, > > otherwise it keeps same structure. > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > --- > > fs/cifs/cifs_debug.c | 21 ++------------------- > > fs/cifs/misc.c | 32 ++------------------------------ > > 2 files changed, 4 insertions(+), 49 deletions(-) > > > > diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c > > index 7c50bfa..14e082f 100644 > > --- a/fs/cifs/cifs_debug.c > > +++ b/fs/cifs/cifs_debug.c > > @@ -34,27 +34,10 @@ > > void > > cifs_dump_mem(char *label, void *data, int length) > > { > > - int i, j; > > - int *intptr = data; > > - char *charptr = data; > > - char buf[10], line[80]; > > - > > printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n", > > label, length, data); > > - for (i = 0; i < length; i += 16) { > > - line[0] = 0; > > - for (j = 0; (j < 4) && (i + j * 4 < length); j++) { > > - sprintf(buf, " %08x", intptr[i / 4 + j]); > > - strcat(line, buf); > > - } > > - buf[0] = ' '; > > - buf[2] = 0; > > - for (j = 0; (j < 16) && (i + j < length); j++) { > > - buf[1] = isprint(charptr[i + j]) ? charptr[i + j] : '.'; > > - strcat(line, buf); > > - } > > - printk(KERN_DEBUG "%s\n", line); > > - } > > + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4, > > + data, length, true); > > } > > > > #ifdef CONFIG_CIFS_DEBUG > > diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c > > index b7415d5..3379463 100644 > > --- a/fs/cifs/misc.c > > +++ b/fs/cifs/misc.c > > @@ -513,39 +513,11 @@ is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv) > > void > > dump_smb(void *buf, int smb_buf_length) > > { > > - int i, j; > > - char debug_line[17]; > > - unsigned char *buffer = buf; > > - > > if (traceSMB == 0) > > return; > > > > - for (i = 0, j = 0; i < smb_buf_length; i++, j++) { > > - if (i % 8 == 0) { > > - /* have reached the beginning of line */ > > - printk(KERN_DEBUG "| "); > > - j = 0; > > - } > > - printk("%0#4x ", buffer[i]); > > - debug_line[2 * j] = ' '; > > - if (isprint(buffer[i])) > > - debug_line[1 + (2 * j)] = buffer[i]; > > - else > > - debug_line[1 + (2 * j)] = '_'; > > - > > - if (i % 8 == 7) { > > - /* reached end of line, time to print ascii */ > > - debug_line[16] = 0; > > - printk(" | %s\n", debug_line); > > - } > > - } > > - for (; j < 8; j++) { > > - printk(" "); > > - debug_line[2 * j] = ' '; > > - debug_line[1 + (2 * j)] = ' '; > > - } > > - printk(" | %s\n", debug_line); > > - return; > > + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_NONE, 8, 2, buf, > > + smb_buf_length, true); > > } > > > > void > > -- > > 2.1.0 > > > > > -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html