]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Mar 2025 21:03:26 +0000 (22:03 +0100)
commitca3c033a4fe1e55cdadb2f9c642ba253ea283ecc
treef01f8846a4a50d5191c112b317158bb69b73fd1e
parentdb7dd032eeb2a3766f471c674dd0dc95a124e608
dma-mapping: fix missing clear bdr in check_ram_in_range_map()

[ Upstream commit 8324993f60305e50f27b98358b01b9837e10d159 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/dma/direct.c