drm/etnaviv: fix dumping of iommuv2
etnaviv_iommuv2_dump_size(..) returns the number of PTE * SZ_4K but etnaviv_iommuv2_dump(..) increments buf pointer even if there is no PTE. This results in a bad buf pointer which gets used for memcpy(..), when copying the MMU state in the coredump buffer. Fixes: afb7b3b1deb4 ("drm/etnaviv: implement IOMMUv2 translation") Cc: stable@vger.kernel.org Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
This commit is contained in:
parent
18fa692d80
commit
a2f10d4a30
@ -155,9 +155,11 @@ static void etnaviv_iommuv2_dump(struct etnaviv_iommu_context *context, void *bu
|
||||
|
||||
memcpy(buf, v2_context->mtlb_cpu, SZ_4K);
|
||||
buf += SZ_4K;
|
||||
for (i = 0; i < MMUv2_MAX_STLB_ENTRIES; i++, buf += SZ_4K)
|
||||
if (v2_context->mtlb_cpu[i] & MMUv2_PTE_PRESENT)
|
||||
for (i = 0; i < MMUv2_MAX_STLB_ENTRIES; i++)
|
||||
if (v2_context->mtlb_cpu[i] & MMUv2_PTE_PRESENT) {
|
||||
memcpy(buf, v2_context->stlb_cpu[i], SZ_4K);
|
||||
buf += SZ_4K;
|
||||
}
|
||||
}
|
||||
|
||||
static void etnaviv_iommuv2_restore_nonsec(struct etnaviv_gpu *gpu,
|
||||
|
Loading…
x
Reference in New Issue
Block a user