Re: Linux-2.4.20-pre8-aa2 oops report.

Srihari Vijayaraghavan (harisri@bigpond.com)
Sat, 5 Oct 2002 13:09:45 +1000


On Saturday 05 October 2002 12:47, Srihari Vijayaraghavan wrote:
> [1.] One line summary of the problem:
> 2.4.20-pre8aa2 Kernel oopsed couple of times.

A little more research reveals that the oops happens at the following function
in mm/memory.c

/*
* remove user pages in a given range.
*/
void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long
size)
{
mmu_gather_t *tlb;
pgd_t * dir;
unsigned long start = address, end = address + size;
int freed = 0;

dir = pgd_offset(mm, address);

/*
* This is a long-lived spinlock. That's fine.
* There's no contention, because the page table
* lock only protects against kswapd anyway, and
* even if kswapd happened to be looking at this
* process we _want_ it to get stuck.
*/
if (address >= end)
BUG();
spin_lock(&mm->page_table_lock);
flush_cache_range(mm, address, end);
tlb = tlb_gather_mmu(mm);

do {
freed += zap_pmd_range(tlb, dir, address, end - address);
address = (address + PGDIR_SIZE) & PGDIR_MASK;
dir++;
} while (address && (address < end));

/* this will flush any remaining tlb entries */
tlb_finish_mmu(tlb, start, end);

/*
* Update rss for the mm_struct (not necessarily current->mm)
* Notice that rss is an unsigned long.
*/
if (mm->rss > freed)
mm->rss -= freed;
else
mm->rss = 0;
spin_unlock(&mm->page_table_lock);
}

BTW I ran memtest2.x and memtest3.0 overnight few times in the past and it
always passed for more than 30 times or so everytime. I forgot to mention
this in my previous e-mail.

-- 
Hari
harisri@bigpond.com

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/