Skip to content

Commit f689a3a

Browse files
yu-chen-surfChristoph Hellwig
authored andcommitted
dma-direct: optimize page freeing when it is not addressable
When the CMA allocation succeeds but isn't addressable, its buffer has already been released and the page is set to NULL. So later when the normal page allocation succeeds but isn't addressable, __free_pages() can be used to free that normal page rather than using dma_free_contiguous that does extra checks that are not needed. Signed-off-by: Chen Yu <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]>
1 parent de6c85b commit f689a3a

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

kernel/dma/direct.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ static struct page *__dma_direct_alloc_pages(struct device *dev, size_t size,
140140
if (!page)
141141
page = alloc_pages_node(node, gfp, get_order(size));
142142
if (page && !dma_coherent_ok(dev, page_to_phys(page), size)) {
143-
dma_free_contiguous(dev, page, size);
143+
__free_pages(page, get_order(size));
144144
page = NULL;
145145

146146
if (IS_ENABLED(CONFIG_ZONE_DMA32) &&

0 commit comments

Comments
 (0)