From e86ff3c7f47b6aa3eb59fd7b1b6a4f9e3a1e5c76 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Mon, 29 Dec 2003 05:52:55 -0800 Subject: [PATCH] [PATCH] Clear dirty bits etc on compound frees From: "Martin J. Bligh" , Guillaume Morin We need to clear the software dirty bit on the tail pages of a compound page when freeing it up. The tail pages can become dirtied by mmap'ing /dev/mem, and writing into any clustered page group (that a driver might have created or whatever). Plus it's better to run all these pages through the free_pages_check checks anyway. --- mm/page_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 49f9d1ca3625c..622364e360a6d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -267,9 +267,11 @@ free_pages_bulk(struct zone *zone, int count, void __free_pages_ok(struct page *page, unsigned int order) { LIST_HEAD(list); + int i; mod_page_state(pgfree, 1 << order); - free_pages_check(__FUNCTION__, page); + for (i = 0 ; i < (1 << order) ; ++i) + free_pages_check(__FUNCTION__, page + i); list_add(&page->list, &list); kernel_map_pages(page, 1<