Remove all inclusions of <linux/config.h>
[pandora-kernel.git] / mm / slab.c
index 792bfe3..f351435 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -86,7 +86,6 @@
  *     All object allocations for a node occur from node specific slab lists.
  */
 
-#include       <linux/config.h>
 #include       <linux/slab.h>
 #include       <linux/mm.h>
 #include       <linux/poison.h>
@@ -1683,10 +1682,32 @@ static void poison_obj(struct kmem_cache *cachep, void *addr, unsigned char val)
 static void dump_line(char *data, int offset, int limit)
 {
        int i;
+       unsigned char error = 0;
+       int bad_count = 0;
+
        printk(KERN_ERR "%03x:", offset);
-       for (i = 0; i < limit; i++)
+       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");
+
+       if (bad_count == 1) {
+               error ^= POISON_FREE;
+               if (!(error & (error - 1))) {
+                       printk(KERN_ERR "Single bit error detected. Probably "
+                                       "bad RAM.\n");
+#ifdef CONFIG_X86
+                       printk(KERN_ERR "Run memtest86+ or a similar memory "
+                                       "test tool.\n");
+#else
+                       printk(KERN_ERR "Run a memory test tool.\n");
+#endif
+               }
+       }
 }
 #endif