mm/arch: use __free_reserved_page() to simplify the code
Subsystems (4)
PATCH 1/2 mm/arch: use __free_reserved_page() to simplify the code
Use __free_reserved_page() to simplify the code in arch.
It used split_page() in consistent_alloc()/__dma_alloc_coherent()/dma_alloc_coherent(), so page->_count = 1, and we can free it safely.
__free_reserved_page()
ClearPageReserved() init_page_count() // it won't change the value __free_page()
Signed-off-by Xishi Qiu <[email protected]>
--- arch/metag/kernel/dma.c | 4 +--- arch/microblaze/mm/consistent.c | 7 ++----- arch/powerpc/mm/dma-noncoherent.c | 4 +--- 3 files changed, 4 insertions(+), 11 deletions(-)
arch/metag/kernel/dma.c +1 -3
@@ -305,9 +305,7 @@ void dma_free_coherent(struct device *dev, size_t size,if (pfn_valid (pfn)) {struct page *page =pfn_to_page (pfn); -ClearPageReserved (page); - -__free_page (page); +__free_reserved_page (page);continue ; } }
arch/microblaze/mm/consistent.c +2 -5
@@ -176,8 +176,7 @@ void consistent_free(size_t size, void *vaddr) page =virt_to_page (vaddr);do { -ClearPageReserved (page); -__free_page (page); +__free_reserved_page (page); page++; }while (size -=PAGE_SIZE );#else
@@ -194,9 +193,7 @@ void consistent_free(size_t size, void *vaddr)pte_clear (&init_mm, (unsigned int )vaddr, ptep);if (pfn_valid (pfn)) { page =pfn_to_page (pfn); - -ClearPageReserved (page); -__free_page (page); +__free_reserved_page (page); } } vaddr +=PAGE_SIZE ;
arch/powerpc/mm/dma-noncoherent.c +1 -3
@@ -287,9 +287,7 @@ void __dma_free_coherent(size_t size, void *vaddr)pte_clear (&init_mm, addr, ptep);if (pfn_valid (pfn)) {struct page *page =pfn_to_page (pfn); - -ClearPageReserved (page); -__free_page (page); +__free_reserved_page (page); } } addr +=PAGE_SIZE ;
Signature · 1 line
1.7.1