From: "Chen, Kenneth W" With list poisoning on by default from linux-2.6.7, it's easier than ever to trigger the bug in try_to_free_low(). It ought to use the safe version of list iterater. Signed-off-by: Ken Chen Signed-off-by: Andrew Morton --- 25-akpm/mm/hugetlb.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN mm/hugetlb.c~hugetlb-use-safe-iterator mm/hugetlb.c --- 25/mm/hugetlb.c~hugetlb-use-safe-iterator Tue Jun 22 15:10:43 2004 +++ 25-akpm/mm/hugetlb.c Tue Jun 22 15:10:43 2004 @@ -134,8 +134,8 @@ static int try_to_free_low(unsigned long { int i; for (i = 0; i < MAX_NUMNODES; ++i) { - struct page *page; - list_for_each_entry(page, &hugepage_freelists[i], lru) { + struct page *page, *next; + list_for_each_entry_safe(page, next, &hugepage_freelists[i], lru) { if (PageHighMem(page)) continue; list_del(&page->lru); _