On Thu, 14 Dec 2023 at 19:26, Jon Hunter <jonathanh@xxxxxxxxxx> wrote: > > > > On 08/12/2023 10:46, Thierry Reding wrote: > > From: Thierry Reding <treding@xxxxxxxxxx> > > > > 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 <jonathanh@xxxxxxxxxx> > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> I've applied this to drm-fixes. Dave.