|
Dave Jones |
a38747f |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
|
Dave Jones |
a38747f |
index 4e8985a..70d0853 100644
|
|
Dave Jones |
a38747f |
--- a/mm/page_alloc.c
|
|
Dave Jones |
a38747f |
+++ b/mm/page_alloc.c
|
|
Dave Jones |
a38747f |
@@ -318,6 +318,7 @@ static void bad_page(struct page *page)
|
|
Dave Jones |
a38747f |
current->comm, page_to_pfn(page));
|
|
Dave Jones |
a38747f |
dump_page(page);
|
|
Jesse Keating |
7a32965 |
|
|
Dave Jones |
a38747f |
+ print_modules();
|
|
Dave Jones |
a38747f |
dump_stack();
|
|
Dave Jones |
a38747f |
out:
|
|
Dave Jones |
a38747f |
/* Leave bad fields for debug, except PageBuddy could make trouble */
|
|
Jesse Keating |
7a32965 |
diff --git a/mm/slab.c b/mm/slab.c
|
|
Dave Jones |
a38747f |
index d96e223..6f8905b 100644
|
|
Jesse Keating |
7a32965 |
--- a/mm/slab.c
|
|
Jesse Keating |
7a32965 |
+++ b/mm/slab.c
|
|
Dave Jones |
a38747f |
@@ -1886,8 +1886,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
|
|
Jesse Keating |
7a32965 |
/* Print header */
|
|
Jesse Keating |
7a32965 |
if (lines == 0) {
|
|
Jesse Keating |
7a32965 |
printk(KERN_ERR
|
|
Jesse Keating |
7a32965 |
- "Slab corruption: %s start=%p, len=%d\n",
|
|
Jesse Keating |
7a32965 |
- cachep->name, realobj, size);
|
|
Jesse Keating |
7a32965 |
+ "Slab corruption (%s): %s start=%p, len=%d\n",
|
|
Jesse Keating |
7a32965 |
+ print_tainted(), cachep->name, realobj, size);
|
|
Jesse Keating |
7a32965 |
print_objinfo(cachep, objp, 0);
|
|
Jesse Keating |
7a32965 |
}
|
|
Jesse Keating |
7a32965 |
/* Hexdump the affected line */
|
|
Dave Jones |
a38747f |
@@ -2985,8 +2985,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
|
|
Jesse Keating |
7a32965 |
if (entries != cachep->num - slabp->inuse) {
|
|
Jesse Keating |
7a32965 |
bad:
|
|
Jesse Keating |
7a32965 |
printk(KERN_ERR "slab: Internal list corruption detected in "
|
|
Jesse Keating |
7a32965 |
- "cache '%s'(%d), slabp %p(%d). Hexdump:\n",
|
|
Jesse Keating |
7a32965 |
- cachep->name, cachep->num, slabp, slabp->inuse);
|
|
Jesse Keating |
7a32965 |
+ "cache '%s'(%d), slabp %p(%d). Tainted(%s). Hexdump:\n",
|
|
Jesse Keating |
7a32965 |
+ cachep->name, cachep->num, slabp, slabp->inuse, print_tainted());
|
|
Jesse Keating |
7a32965 |
for (i = 0;
|
|
Jesse Keating |
7a32965 |
i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t);
|
|
Jesse Keating |
7a32965 |
i++) {
|
|
Jesse Keating |
7a32965 |
diff --git a/mm/slub.c b/mm/slub.c
|
|
Dave Jones |
a38747f |
index 35f351f..e7ccb39 100644
|
|
Jesse Keating |
7a32965 |
--- a/mm/slub.c
|
|
Jesse Keating |
7a32965 |
+++ b/mm/slub.c
|
|
Dave Jones |
a38747f |
@@ -472,7 +472,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
|
|
Jesse Keating |
7a32965 |
va_end(args);
|
|
Jesse Keating |
7a32965 |
printk(KERN_ERR "========================================"
|
|
Jesse Keating |
7a32965 |
"=====================================\n");
|
|
Jesse Keating |
7a32965 |
- printk(KERN_ERR "BUG %s: %s\n", s->name, buf);
|
|
Jesse Keating |
7a32965 |
+ printk(KERN_ERR "BUG %s (%s): %s\n", s->name, print_tainted(), buf);
|
|
Jesse Keating |
7a32965 |
printk(KERN_ERR "----------------------------------------"
|
|
Jesse Keating |
7a32965 |
"-------------------------------------\n\n");
|
|
Jesse Keating |
7a32965 |
}
|