]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
scatterlist: add generic wrappers for iterating over sgtable objects
authorMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 13 May 2020 13:32:09 +0000 (15:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Feb 2023 10:53:25 +0000 (11:53 +0100)
commit4626550b09ea66d95ceb2a9273d60559d6cb67df
tree60ded0e399c7cbfe14ed3fa14228bdf3f0d0048c
parentfe3e217272a86bfc7958315229b35cc6ee41b155
scatterlist: add generic wrappers for iterating over sgtable objects

[ Upstream commit 709d6d73c756107fb8a292a9f957d630097425fa ]

struct sg_table is a common structure used for describing a memory
buffer. It consists of a scatterlist with memory pages and DMA addresses
(sgl entry), as well as the number of scatterlist entries: CPU pages
(orig_nents entry) and DMA mapped pages (nents entry).

It turned out that it was a common mistake to misuse nents and orig_nents
entries, calling the scatterlist iterating functions with a wrong number
of the entries.

To avoid such issues, lets introduce a common wrappers operating directly
on the struct sg_table objects, which take care of the proper use of
the nents and orig_nents entries.

While touching this, lets clarify some ambiguities in the comments for
the existing for_each helpers.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Stable-dep-of: d37c120b7312 ("drm/etnaviv: don't truncate physical page address")
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/linux/scatterlist.h