dma-mapping: fix missing clear bdr in check_ram_in_range_map()
authorBaochen Qiang <quic_bqiang@quicinc.com>
Fri, 7 Mar 2025 03:03:50 +0000 (11:03 +0800)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 12 Mar 2025 12:41:44 +0000 (13:41 +0100)
commit8324993f60305e50f27b98358b01b9837e10d159
tree1cec449bb494b1631894e046c5a2a5003f68b56e
parent2014c95afecee3e76ca4a56956a936e23283f05b
dma-mapping: fix missing clear bdr in check_ram_in_range_map()

As discussed in [1], if 'bdr' is set once, it would never get
cleared, hence 0 is always returned.

Refactor the range check hunk into a new helper dma_find_range(),
which allows 'bdr' to be cleared in each iteration.

Link: https://lore.kernel.org/all/64931fac-085b-4ff3-9314-84bac2fa9bdb@quicinc.com/
Fixes: a409d9600959 ("dma-mapping: fix dma_addressing_limited() if dma_range_map can't cover all system RAM")
Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Link: https://lore.kernel.org/r/20250307030350.69144-1-quic_bqiang@quicinc.com
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
kernel/dma/direct.c