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 <qiuxishi@huawei.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
9e4be4708e
Коммит
c1ce4b375f
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче