[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20070530143451.f4a844bc.randy.dunlap@oracle.com>
Date: Wed, 30 May 2007 14:34:51 -0700
From: Randy Dunlap <randy.dunlap@...cle.com>
To: Christoph Lameter <clameter@....com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org
Subject: [PATCH 2/3 -mm] slub: use lib/hexdump
From: Randy Dunlap <randy.dunlap@...cle.com>
Convert slub error memory dump functions to use lib/hexdump routines.
Completely eliminate slub's print_section() function.
Signed-off-by: Randy Dunlap <randy.dunlap@...cle.com>
---
mm/slub.c | 53 ++++++++++++-----------------------------------------
1 file changed, 12 insertions(+), 41 deletions(-)
--- linux-2622-rc2mm1-slub.orig/mm/slub.c
+++ linux-2622-rc2mm1-slub/mm/slub.c
@@ -8,6 +8,7 @@
* (C) 2007 SGI, Christoph Lameter <clameter@....com>
*/
+#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/bit_spinlock.h>
@@ -334,41 +335,6 @@ static int slub_debug;
static char *slub_debug_slabs;
-/*
- * Object debugging
- */
-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 "%10s 0x%p: ", text, addr + i);
- newline = 0;
- }
- printk(" %02x", addr[i]);
- offset = i % 16;
- ascii[offset] = isgraph(addr[i]) ? addr[i] : '.';
- if (offset == 15) {
- printk(" %s\n",ascii);
- newline = 1;
- }
- }
- if (!newline) {
- i %= 16;
- while (i < 16) {
- printk(" ");
- ascii[i] = ' ';
- i++;
- }
- printk(" %s\n", ascii);
- }
-}
-
static struct track *get_track(struct kmem_cache *s, void *object,
enum track_item alloc)
{
@@ -425,8 +391,8 @@ static void print_trailer(struct kmem_ca
unsigned int off; /* Offset of last byte */
if (s->flags & SLAB_RED_ZONE)
- print_section("Redzone", p + s->objsize,
- s->inuse - s->objsize);
+ print_hex_dump(KERN_ERR, " Redzone ", DUMP_PREFIX_ADDRESS,
+ 16, 1, p + s->objsize, s->inuse - s->objsize, 1);
printk(KERN_ERR "FreePointer 0x%p -> 0x%p\n",
p + s->offset,
@@ -445,7 +411,8 @@ static void print_trailer(struct kmem_ca
if (off != s->size)
/* Beginning of the filler is the free pointer */
- print_section("Filler", p + off, s->size - off);
+ print_hex_dump(KERN_ERR, " Filler ", DUMP_PREFIX_ADDRESS,
+ 16, 1, p + off, s->size - off, 1);
}
static void object_err(struct kmem_cache *s, struct page *page,
@@ -458,8 +425,10 @@ static void object_err(struct kmem_cache
printk(KERN_ERR " offset=%tu flags=0x%04lx inuse=%u freelist=0x%p\n",
object - addr, page->flags, page->inuse, page->freelist);
if (object > addr + 16)
- print_section("Bytes b4", object - 16, 16);
- print_section("Object", object, min(s->objsize, 128));
+ print_hex_dump(KERN_ERR, " Bytes b4 ", DUMP_PREFIX_ADDRESS,
+ 16, 1, object - 16, 16, 1);
+ print_hex_dump(KERN_ERR, " Object ", DUMP_PREFIX_ADDRESS, 16, 1,
+ object, min(s->objsize, 128), 1);
print_trailer(s, object);
dump_stack();
}
@@ -759,7 +728,9 @@ static void trace(struct kmem_cache *s,
page->freelist);
if (!alloc)
- print_section("Object", (void *)object, s->objsize);
+ print_hex_dump(KERN_ERR, " Object ",
+ DUMP_PREFIX_ADDRESS, 16, 1,
+ (void *)object, s->objsize, 1);
dump_stack();
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists