From: Thierry Reding Date: Fri, 8 Dec 2023 10:46:53 +0000 (+0100) Subject: drm/nouveau: Fixup gk20a instobj hierarchy X-Git-Tag: microblaze-v6.10~803^2~1 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=46dec61643d7047c9b5929f98a2b7fa4fa93a7dc;hp=46dec61643d7047c9b5929f98a2b7fa4fa93a7dc;p=linux-2.6-microblaze.git drm/nouveau: Fixup gk20a instobj hierarchy Commit 12c9b05da918 ("drm/nouveau/imem: support allocations not preserved across suspend") uses container_of() to cast from struct nvkm_memory to struct nvkm_instobj, assuming that all instance objects are derived from struct nvkm_instobj. For the gk20a family that's not the case and they are derived from struct nvkm_memory instead. This causes some subtle data corruption (nvkm_instobj.preserve ends up mapping to gk20a_instobj.vaddr) that causes a NULL pointer dereference in gk20a_instobj_acquire_iommu() (and possibly elsewhere) and also prevents suspend/resume from working. Fix this by making struct gk20a_instobj derive from struct nvkm_instobj instead. Fixes: 12c9b05da918 ("drm/nouveau/imem: support allocations not preserved across suspend") Reported-by: Jonathan Hunter Signed-off-by: Thierry Reding Tested-by: Jon Hunter Signed-off-by: Dave Airlie Link: https://patchwork.freedesktop.org/patch/msgid/20231208104653.1917055-1-thierry.reding@gmail.com ---