Skip to contentSkip to conversation

Bug fix in mm/hugetlb.c - use safe iterater

PATCH Chen, Kenneth W 1 participant 1 message Jun 22, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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.

mm/hugetlb.c +2 -2
diff -Nurp linux-2.6.7.orig/mm/hugetlb.c linux-2.6.7/mm/hugetlb.c
@@ -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);