* [PATCH 1/2] mm/slab: use print_hex_dump @ 2011-07-29 12:10 Sebastian Andrzej Siewior 2011-07-29 12:10 ` [PATCH 2/2] mm/slub: " Sebastian Andrzej Siewior 2011-07-29 15:01 ` [PATCH 1/2] mm/slab: " Christoph Lameter 0 siblings, 2 replies; 7+ messages in thread From: Sebastian Andrzej Siewior @ 2011-07-29 12:10 UTC (permalink / raw) To: Christoph Lameter Cc: Pekka Enberg, Matt Mackall, linux-mm, Sebastian Andrzej Siewior less code and the advantage of ascii dump. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- mm/slab.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mm/slab.c b/mm/slab.c index d96e223..63ed525 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1810,15 +1810,15 @@ static void dump_line(char *data, int offset, int limit) unsigned char error = 0; int bad_count = 0; - printk(KERN_ERR "%03x:", offset); + printk(KERN_ERR "%03x: ", offset); for (i = 0; i < limit; i++) { if (data[offset + i] != POISON_FREE) { error = data[offset + i]; bad_count++; } - printk(" %02x", (unsigned char)data[offset + i]); } - printk("\n"); + print_hex_dump(KERN_CONT, "", 0, 16, 1, + &data[offset], limit, 1); if (bad_count == 1) { error ^= POISON_FREE; @@ -2987,14 +2987,9 @@ bad: printk(KERN_ERR "slab: Internal list corruption detected in " "cache '%s'(%d), slabp %p(%d). Hexdump:\n", cachep->name, cachep->num, slabp, slabp->inuse); - for (i = 0; - i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t); - i++) { - if (i % 16 == 0) - printk("\n%03x:", i); - printk(" %02x", ((unsigned char *)slabp)[i]); - } - printk("\n"); + print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 16, 1, slabp, + sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t), + 1); BUG(); } } -- 1.7.4.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] mm/slub: use print_hex_dump 2011-07-29 12:10 [PATCH 1/2] mm/slab: use print_hex_dump Sebastian Andrzej Siewior @ 2011-07-29 12:10 ` Sebastian Andrzej Siewior 2011-07-29 16:30 ` Christoph Lameter 2011-07-29 15:01 ` [PATCH 1/2] mm/slab: " Christoph Lameter 1 sibling, 1 reply; 7+ messages in thread From: Sebastian Andrzej Siewior @ 2011-07-29 12:10 UTC (permalink / raw) To: Christoph Lameter Cc: Pekka Enberg, Matt Mackall, linux-mm, Sebastian Andrzej Siewior less code and same functionality. The output would be: | Object c7428000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | Object c7428010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | Object c7428020: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk | Object c7428030: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkk. | Redzone c742803c: bb bb bb bb .... | Padding c7428064: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ | Padding c7428074: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- mm/slub.c | 44 +++++++++----------------------------------- 1 files changed, 9 insertions(+), 35 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 35f351f..0e11a8a 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -371,34 +371,8 @@ static int disable_higher_order_debug; */ static void print_section(char *text, u8 *addr, unsigned int length) { - int i, offset; - int newline = 1; - char ascii[17]; - - ascii[16] = 0; - - for (i = 0; i < length; i++) { - if (newline) { - printk(KERN_ERR "%8s 0x%p: ", text, addr + i); - newline = 0; - } - printk(KERN_CONT " %02x", addr[i]); - offset = i % 16; - ascii[offset] = isgraph(addr[i]) ? addr[i] : '.'; - if (offset == 15) { - printk(KERN_CONT " %s\n", ascii); - newline = 1; - } - } - if (!newline) { - i %= 16; - while (i < 16) { - printk(KERN_CONT " "); - ascii[i] = ' '; - i++; - } - printk(KERN_CONT " %s\n", ascii); - } + print_hex_dump(KERN_ERR, text, DUMP_PREFIX_ADDRESS, 16, 1, addr, + length, 1); } static struct track *get_track(struct kmem_cache *s, void *object, @@ -501,12 +475,12 @@ static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p) p, p - addr, get_freepointer(s, p)); if (p > addr + 16) - print_section("Bytes b4", p - 16, 16); - - print_section("Object", p, min_t(unsigned long, s->objsize, PAGE_SIZE)); + print_section("Bytes b4 ", p - 16, 16); + print_section("Object ", p, min_t(unsigned long, s->objsize, + PAGE_SIZE)); if (s->flags & SLAB_RED_ZONE) - print_section("Redzone", p + s->objsize, + print_section("Redzone ", p + s->objsize, s->inuse - s->objsize); if (s->offset) @@ -519,7 +493,7 @@ static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p) if (off != s->size) /* Beginning of the filler is the free pointer */ - print_section("Padding", p + off, s->size - off); + print_section("Padding ", p + off, s->size - off); dump_stack(); } @@ -682,7 +656,7 @@ static int slab_pad_check(struct kmem_cache *s, struct page *page) end--; slab_err(s, page, "Padding overwritten. 0x%p-0x%p", fault, end - 1); - print_section("Padding", end - remainder, remainder); + print_section("Padding ", end - remainder, remainder); restore_bytes(s, "slab padding", POISON_INUSE, end - remainder, end); return 0; @@ -830,7 +804,7 @@ static void trace(struct kmem_cache *s, struct page *page, void *object, page->freelist); if (!alloc) - print_section("Object", (void *)object, s->objsize); + print_section("Object ", (void *)object, s->objsize); dump_stack(); } -- 1.7.4.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] mm/slub: use print_hex_dump 2011-07-29 12:10 ` [PATCH 2/2] mm/slub: " Sebastian Andrzej Siewior @ 2011-07-29 16:30 ` Christoph Lameter 0 siblings, 0 replies; 7+ messages in thread From: Christoph Lameter @ 2011-07-29 16:30 UTC (permalink / raw) To: Sebastian Andrzej Siewior; +Cc: Pekka Enberg, Matt Mackall, linux-mm Acked-by: Christoph Lameter <cl@linux.com> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] mm/slab: use print_hex_dump 2011-07-29 12:10 [PATCH 1/2] mm/slab: use print_hex_dump Sebastian Andrzej Siewior 2011-07-29 12:10 ` [PATCH 2/2] mm/slub: " Sebastian Andrzej Siewior @ 2011-07-29 15:01 ` Christoph Lameter 2011-07-29 16:22 ` [PATCH v2] " Sebastian Andrzej Siewior 1 sibling, 1 reply; 7+ messages in thread From: Christoph Lameter @ 2011-07-29 15:01 UTC (permalink / raw) To: Sebastian Andrzej Siewior; +Cc: Pekka Enberg, Matt Mackall, linux-mm On Fri, 29 Jul 2011, Sebastian Andrzej Siewior wrote: > less code and the advantage of ascii dump. Would you please include an example of output before and after the change? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] mm/slab: use print_hex_dump 2011-07-29 15:01 ` [PATCH 1/2] mm/slab: " Christoph Lameter @ 2011-07-29 16:22 ` Sebastian Andrzej Siewior 2011-07-29 16:30 ` Christoph Lameter 0 siblings, 1 reply; 7+ messages in thread From: Sebastian Andrzej Siewior @ 2011-07-29 16:22 UTC (permalink / raw) To: Christoph Lameter; +Cc: Pekka Enberg, Matt Mackall, linux-mm less code and the advantage of ascii dump. before: | Slab corruption: names_cache start=c5788000, len=4096 | 000: 6b 6b 01 00 00 00 56 00 00 00 24 00 00 00 2a 00 | 010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff | 030: ff ff ff ff e2 b4 17 18 c7 e4 08 06 00 01 08 00 | 040: 06 04 00 01 e2 b4 17 18 c7 e4 0a 00 00 01 00 00 | 050: 00 00 00 00 0a 00 00 02 6b 6b 6b 6b 6b 6b 6b 6b after: | Slab corruption: size-4096 start=c38a9000, len=4096 | 000: 6b 6b 01 00 00 00 56 00 00 00 24 00 00 00 2a 00 kk....V...$...*. | 010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | 020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ................ | 030: ff ff ff ff d2 56 5f aa db 9c 08 06 00 01 08 00 .....V_......... | 040: 06 04 00 01 d2 56 5f aa db 9c 0a 00 00 01 00 00 .....V_......... | 050: 00 00 00 00 0a 00 00 02 6b 6b 6b 6b 6b 6b 6b 6b ........kkkkkkkk Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- mm/slab.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mm/slab.c b/mm/slab.c index d96e223..63ed525 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1810,15 +1810,15 @@ static void dump_line(char *data, int offset, int limit) unsigned char error = 0; int bad_count = 0; - printk(KERN_ERR "%03x:", offset); + printk(KERN_ERR "%03x: ", offset); for (i = 0; i < limit; i++) { if (data[offset + i] != POISON_FREE) { error = data[offset + i]; bad_count++; } - printk(" %02x", (unsigned char)data[offset + i]); } - printk("\n"); + print_hex_dump(KERN_CONT, "", 0, 16, 1, + &data[offset], limit, 1); if (bad_count == 1) { error ^= POISON_FREE; @@ -2987,14 +2987,9 @@ bad: printk(KERN_ERR "slab: Internal list corruption detected in " "cache '%s'(%d), slabp %p(%d). Hexdump:\n", cachep->name, cachep->num, slabp, slabp->inuse); - for (i = 0; - i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t); - i++) { - if (i % 16 == 0) - printk("\n%03x:", i); - printk(" %02x", ((unsigned char *)slabp)[i]); - } - printk("\n"); + print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 16, 1, slabp, + sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t), + 1); BUG(); } } -- 1.7.4.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2] mm/slab: use print_hex_dump 2011-07-29 16:22 ` [PATCH v2] " Sebastian Andrzej Siewior @ 2011-07-29 16:30 ` Christoph Lameter 2011-07-31 16:24 ` Pekka Enberg 0 siblings, 1 reply; 7+ messages in thread From: Christoph Lameter @ 2011-07-29 16:30 UTC (permalink / raw) To: Sebastian Andrzej Siewior; +Cc: Pekka Enberg, Matt Mackall, linux-mm On Fri, 29 Jul 2011, Sebastian Andrzej Siewior wrote: > less code and the advantage of ascii dump. Cool. Acked-by: Christoph Lameter <cl@linux.com> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] mm/slab: use print_hex_dump 2011-07-29 16:30 ` Christoph Lameter @ 2011-07-31 16:24 ` Pekka Enberg 0 siblings, 0 replies; 7+ messages in thread From: Pekka Enberg @ 2011-07-31 16:24 UTC (permalink / raw) To: Christoph Lameter; +Cc: Sebastian Andrzej Siewior, Matt Mackall, linux-mm On Fri, 29 Jul 2011, Sebastian Andrzej Siewior wrote: >> less code and the advantage of ascii dump. On Fri, 29 Jul 2011, Christoph Lameter wrote: > Cool. > > Acked-by: Christoph Lameter <cl@linux.com> I applied both patches and will queue them for linux-next once -rc1 is out. Thanks! -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-07-31 16:24 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-07-29 12:10 [PATCH 1/2] mm/slab: use print_hex_dump Sebastian Andrzej Siewior 2011-07-29 12:10 ` [PATCH 2/2] mm/slub: " Sebastian Andrzej Siewior 2011-07-29 16:30 ` Christoph Lameter 2011-07-29 15:01 ` [PATCH 1/2] mm/slab: " Christoph Lameter 2011-07-29 16:22 ` [PATCH v2] " Sebastian Andrzej Siewior 2011-07-29 16:30 ` Christoph Lameter 2011-07-31 16:24 ` Pekka Enberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).