diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2011-07-29 12:22:13 -0400 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2011-07-31 12:16:33 -0400 |
commit | fdde6abb3e8dd45e4b026fcf32d40aed96ce3944 (patch) | |
tree | 926dac3ce211abae103ac50c2a56e0e791b9a043 /mm | |
parent | 250f8e3db646028353a2a737ddb7a894c97a1098 (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')
-rw-r--r-- | mm/slab.c | 17 |
1 files changed, 6 insertions, 11 deletions
@@ -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 | } |