mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
gpu: host1x: Fix iommu_map_sgtable() return value check
[ Upstream commit18f7476201] Commit "iommu: return full error code from iommu_map_sg[_atomic]()" changed iommu_map_sgtable() to return an ssize_t and negative values in error cases, rather than a size_t and a zero. pin_job() also was incorrectly assigning to 'int', which could cause overflows into negative values. Update pin_job() to correctly check for errors from iommu_map_sgtable. Fixes:ad8f36e4b6("iommu: return full error code from iommu_map_sg[_atomic]()") Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://patch.msgid.link/20260421-iommu_map_sgtable-return-v1-1-fb484c07d2a1@nvidia.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3d211fb43a
commit
3ac173e46e
@@ -235,6 +235,8 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
|
||||
}
|
||||
|
||||
if (host->domain) {
|
||||
ssize_t map_err;
|
||||
|
||||
for_each_sgtable_sg(map->sgt, sg, j)
|
||||
gather_size += sg->length;
|
||||
|
||||
@@ -248,11 +250,11 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
|
||||
goto put;
|
||||
}
|
||||
|
||||
err = iommu_map_sgtable(host->domain, iova_dma_addr(&host->iova, alloc),
|
||||
map->sgt, IOMMU_READ);
|
||||
if (err == 0) {
|
||||
map_err = iommu_map_sgtable(host->domain, iova_dma_addr(&host->iova, alloc),
|
||||
map->sgt, IOMMU_READ);
|
||||
if (map_err < 0) {
|
||||
__free_iova(&host->iova, alloc);
|
||||
err = -EINVAL;
|
||||
err = map_err;
|
||||
goto put;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user