2.6.15-rc1-mm2 0x414 Bad page states

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks a lot for your PageReserved "Bad page state" reports.

Sorry for being so slow to respond.  I've not worked it out yet.

Would each of you please apply the slightly-more-debug-info patch
below, and mail me the first batch of reports that you get when
you try to reproduce the problem (it does assume only one CPU,
which happens to be the case for each of you).

Thanks,
Hugh

--- 2.6.15-rc1-mm2/mm/memory.c	2005-11-18 15:23:09.000000000 +0000
+++ linux/mm/memory.c	2005-11-18 17:56:23.000000000 +0000
@@ -569,6 +569,7 @@ static unsigned long zap_pte_range(struc
 				unsigned long addr, unsigned long end,
 				long *zap_work, struct zap_details *details)
 {
+	extern struct vm_area_struct *zap_vma;
 	struct mm_struct *mm = tlb->mm;
 	pte_t *pte;
 	spinlock_t *ptl;
@@ -576,6 +577,7 @@ static unsigned long zap_pte_range(struc
 	int anon_rss = 0;
 
 	pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+	zap_vma = vma;
 	do {
 		pte_t ptent = *pte;
 		if (pte_none(ptent)) {
@@ -649,6 +651,7 @@ static unsigned long zap_pte_range(struc
 		pte_clear_full(mm, addr, pte, tlb->fullmm);
 	} while (pte++, addr += PAGE_SIZE, (addr != end && *zap_work > 0));
 
+	zap_vma = NULL;
 	add_mm_rss(mm, file_rss, anon_rss);
 	pte_unmap_unlock(pte - 1, ptl);
 
--- 2.6.15-rc1-mm2/mm/page_alloc.c	2005-11-18 15:23:09.000000000 +0000
+++ linux/mm/page_alloc.c	2005-11-18 18:16:28.000000000 +0000
@@ -36,6 +36,7 @@
 #include <linux/memory_hotplug.h>
 #include <linux/nodemask.h>
 #include <linux/vmalloc.h>
+#include <linux/kallsyms.h>
 
 #include <asm/tlbflush.h>
 #include "internal.h"
@@ -122,6 +123,7 @@ static int bad_range(struct zone *zone, 
 	return 0;
 }
 
+struct vm_area_struct *zap_vma;
 static void bad_page(const char *function, struct page *page)
 {
 	printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
@@ -129,6 +131,13 @@ static void bad_page(const char *functio
 	printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
 		(int)(2*sizeof(unsigned long)), (unsigned long)page->flags,
 		page->mapping, page_mapcount(page), page_count(page));
+	if (zap_vma) {
+		printk(KERN_EMERG "vm_flags:0x%lx", zap_vma->vm_flags);
+		print_symbol(" %s", (unsigned long)
+			(zap_vma->vm_ops? zap_vma->vm_ops->open: NULL));
+		print_symbol(" %s\n", (unsigned long)
+			(zap_vma->vm_ops? zap_vma->vm_ops->nopage: NULL));
+	}
 	printk(KERN_EMERG "Backtrace:\n");
 	dump_stack();
 	{
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux