HomeFreeBSD

linuxkpi: Fix return value of dma_map_sgtable

Description

linuxkpi: Fix return value of dma_map_sgtable

dma_map_sgtable internally uses the dma_map_sg_attrs helper. The problem is
that dma_map_sg_attrs returns the number of entries mapped, whereas
dma_map_sgtable returns nonzero on failure. This leads to dma_map_sgtable
returning non-zero-but-positive values which tricks other areas of the stack
into thinking nents is a valid pointer.

This checks if nents is valid and returns zero if so, updating the nents field
in sgt. This fixes PRIME render offload with nvidia-drm.

Fixes: 9202c95f47c2 ("linuxkpi: Add dma_{un,}map_sgtable")
(cherry picked from commit 4085bde9fa2ea7ebe861a2e4a07312aac00a26fc)

Details

Provenance
ashafer_badland.ioAuthored on Dec 6 2022, 3:25 PM
manuCommitted on Feb 2 2023, 11:10 AM
Parents
rG037902038e68: rc.d: Put resolv script in FreeBSD-resolvconf
Branches
Unknown
Tags
Unknown