mirror of https://gitee.com/openkylin/linux.git
dma-contiguous: page-align the size in dma_free_contiguous()
According to the original dma_direct_alloc_pages() code: { unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT; if (!dma_release_from_contiguous(dev, page, count)) __free_pages(page, get_order(size)); } The count parameter for dma_release_from_contiguous() was page aligned before the right-shifting operation, while the new API dma_free_contiguous() forgets to have PAGE_ALIGN() at the size. So this patch simply adds it to prevent any corner case. Fixes: fdaeec198ada ("dma-contiguous: add dma_{alloc,free}_contiguous() helpers") Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
c6622a425a
commit
f46cc01525
|
@ -267,7 +267,8 @@ struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp)
|
||||||
*/
|
*/
|
||||||
void dma_free_contiguous(struct device *dev, struct page *page, size_t size)
|
void dma_free_contiguous(struct device *dev, struct page *page, size_t size)
|
||||||
{
|
{
|
||||||
if (!cma_release(dev_get_cma_area(dev), page, size >> PAGE_SHIFT))
|
if (!cma_release(dev_get_cma_area(dev), page,
|
||||||
|
PAGE_ALIGN(size) >> PAGE_SHIFT))
|
||||||
__free_pages(page, get_order(size));
|
__free_pages(page, get_order(size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue