Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7835e98b authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

[PATCH] remove set_page_count() outside mm/



set_page_count usage outside mm/ is limited to setting the refcount to 1.
Remove set_page_count from outside mm/, and replace those users with
init_page_count() and set_page_refcounted().

This allows more debug checking, and tighter control on how code is allowed
to play around with page->_count.

Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 70dc991d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -357,7 +357,7 @@ free_reserved_mem(void *start, void *end)
	void *__start = start;
	for (; __start < end; __start += PAGE_SIZE) {
		ClearPageReserved(virt_to_page(__start));
		set_page_count(virt_to_page(__start), 1);
		init_page_count(virt_to_page(__start));
		free_page((long)__start);
		totalram_pages++;
	}
+1 −1
Original line number Diff line number Diff line
@@ -531,7 +531,7 @@ static inline void free_area(unsigned long addr, unsigned long end, char *s)
	for (; addr < end; addr += PAGE_SIZE) {
		struct page *page = virt_to_page(addr);
		ClearPageReserved(page);
		set_page_count(page, 1);
		init_page_count(page);
		free_page(addr);
		totalram_pages++;
	}
+1 −1
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ static inline void free_area(unsigned long addr, unsigned long end, char *s)
	for (; addr < end; addr += PAGE_SIZE) {
		struct page *page = virt_to_page(addr);
		ClearPageReserved(page);
		set_page_count(page, 1);
		init_page_count(page);
		free_page(addr);
		totalram_pages++;
	}
+1 −1
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ free_initmem(void)
        addr = (unsigned long)(&__init_begin);
        for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
                ClearPageReserved(virt_to_page(addr));
                set_page_count(virt_to_page(addr), 1);
                init_page_count(virt_to_page(addr));
                free_page(addr);
                totalram_pages++;
        }
+3 −3
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ void __init mem_init(void)
		struct page *page = &mem_map[pfn];

		ClearPageReserved(page);
		set_page_count(page, 1);
		init_page_count(page);
		__free_page(page);
		totalram_pages++;
	}
@@ -210,7 +210,7 @@ void __init free_initmem(void)
	/* next to check that the page we free is not a partial page */
	for (addr = start; addr < end; addr += PAGE_SIZE) {
		ClearPageReserved(virt_to_page(addr));
		set_page_count(virt_to_page(addr), 1);
		init_page_count(virt_to_page(addr));
		free_page(addr);
		totalram_pages++;
	}
@@ -230,7 +230,7 @@ void __init free_initrd_mem(unsigned long start, unsigned long end)
	int pages = 0;
	for (; start < end; start += PAGE_SIZE) {
		ClearPageReserved(virt_to_page(start));
		set_page_count(virt_to_page(start), 1);
		init_page_count(virt_to_page(start));
		free_page(start);
		totalram_pages++;
		pages++;
Loading