Skip to content

Commit eb9c7a8

Browse files
dcuigregkh
authored andcommitted
dma-direct: use the correct size for dma_set_encrypted()
commit 3be4562 upstream. The third parameter of dma_set_encrypted() is a size in bytes rather than the number of pages. Fixes: 4d05647 ("dma-direct: factor out dma_set_{de,en}crypted helpers") Signed-off-by: Dexuan Cui <[email protected]> Reviewed-by: Robin Murphy <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 16d5d91 commit eb9c7a8

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

Diff for: kernel/dma/direct.c

+2-3
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ void dma_direct_free(struct device *dev, size_t size,
357357
} else {
358358
if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED))
359359
arch_dma_clear_uncached(cpu_addr, size);
360-
if (dma_set_encrypted(dev, cpu_addr, 1 << page_order))
360+
if (dma_set_encrypted(dev, cpu_addr, size))
361361
return;
362362
}
363363

@@ -392,15 +392,14 @@ void dma_direct_free_pages(struct device *dev, size_t size,
392392
struct page *page, dma_addr_t dma_addr,
393393
enum dma_data_direction dir)
394394
{
395-
unsigned int page_order = get_order(size);
396395
void *vaddr = page_address(page);
397396

398397
/* If cpu_addr is not from an atomic pool, dma_free_from_pool() fails */
399398
if (IS_ENABLED(CONFIG_DMA_COHERENT_POOL) &&
400399
dma_free_from_pool(dev, vaddr, size))
401400
return;
402401

403-
if (dma_set_encrypted(dev, vaddr, 1 << page_order))
402+
if (dma_set_encrypted(dev, vaddr, size))
404403
return;
405404
__dma_direct_free_pages(dev, page, size);
406405
}

0 commit comments

Comments
 (0)