swiotlb: Enforce page alignment in swiotlb_alloc()
authorWill Deacon <will@kernel.org>
Fri, 8 Mar 2024 15:28:25 +0000 (15:28 +0000)
committerChristoph Hellwig <hch@lst.de>
Wed, 13 Mar 2024 18:39:22 +0000 (11:39 -0700)
commit823353b7cf0ea9dfb09f5181d5fb2825d727200b
tree26da8a6c2a3eef07150016a861b31105783a2602
parent04867a7a33324c9c562ee7949dbcaab7aaad1fb4
swiotlb: Enforce page alignment in swiotlb_alloc()

When allocating pages from a restricted DMA pool in swiotlb_alloc(),
the buffer address is blindly converted to a 'struct page *' that is
returned to the caller. In the unlikely event of an allocation bug,
page-unaligned addresses are not detected and slots can silently be
double-allocated.

Add a simple check of the buffer alignment in swiotlb_alloc() to make
debugging a little easier if something has gone wonky.

Signed-off-by: Will Deacon <will@kernel.org>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
Reviewed-by: Petr Tesarik <petr.tesarik1@huawei-partners.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/dma/swiotlb.c