aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slab.c
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2011-07-29 12:22:13 -0400
committerPekka Enberg <penberg@kernel.org>2011-07-31 12:16:33 -0400
commitfdde6abb3e8dd45e4b026fcf32d40aed96ce3944 (patch)
tree926dac3ce211abae103ac50c2a56e0e791b9a043 /mm/slab.c
parent250f8e3db646028353a2a737ddb7a894c97a1098 (diff)
slab: use print_hex_dump
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 Acked-by: Christoph Lameter <cl@linux.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'mm/slab.c')
-rw-r--r--mm/slab.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/mm/slab.c b/mm/slab.c
index 1e523ed47c61..41fc5781c7cc 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1811,15 +1811,15 @@ static void dump_line(char *data, int offset, int limit)
1811 unsigned char error = 0; 1811 unsigned char error = 0;
1812 int bad_count = 0; 1812 int bad_count = 0;
1813 1813
1814 printk(KERN_ERR "%03x:", offset); 1814 printk(KERN_ERR "%03x: ", offset);
1815 for (i = 0; i < limit; i++) { 1815 for (i = 0; i < limit; i++) {
1816 if (data[offset + i] != POISON_FREE) { 1816 if (data[offset + i] != POISON_FREE) {
1817 error = data[offset + i]; 1817 error = data[offset + i];
1818 bad_count++; 1818 bad_count++;
1819 } 1819 }
1820 printk(" %02x", (unsigned char)data[offset + i]);
1821 } 1820 }
1822 printk("\n"); 1821 print_hex_dump(KERN_CONT, "", 0, 16, 1,
1822 &data[offset], limit, 1);
1823 1823
1824 if (bad_count == 1) { 1824 if (bad_count == 1) {
1825 error ^= POISON_FREE; 1825 error ^= POISON_FREE;
@@ -2989,14 +2989,9 @@ bad:
2989 printk(KERN_ERR "slab: Internal list corruption detected in " 2989 printk(KERN_ERR "slab: Internal list corruption detected in "
2990 "cache '%s'(%d), slabp %p(%d). Hexdump:\n", 2990 "cache '%s'(%d), slabp %p(%d). Hexdump:\n",
2991 cachep->name, cachep->num, slabp, slabp->inuse); 2991 cachep->name, cachep->num, slabp, slabp->inuse);
2992 for (i = 0; 2992 print_hex_dump(KERN_ERR, "", DUMP_PREFIX_OFFSET, 16, 1, slabp,
2993 i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t); 2993 sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t),
2994 i++) { 2994 1);
2995 if (i % 16 == 0)
2996 printk("\n%03x:", i);
2997 printk(" %02x", ((unsigned char *)slabp)[i]);
2998 }
2999 printk("\n");
3000 BUG(); 2995 BUG();
3001 } 2996 }
3002} 2997}