Merge "msm: kgsl: Deregister gpu address on memdesc_sg_virt failure"

This commit is contained in:
qctecmdr 2021-05-12 15:56:16 -07:00 committed by Gerrit - the friendly Code Review server
commit c84b15c7c4

View File

@ -2458,6 +2458,8 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable,
{
/* Map an anonymous memory chunk */
int ret;
if (size == 0 || offset != 0 ||
!IS_ALIGNED(size, PAGE_SIZE))
return -EINVAL;
@ -2467,7 +2469,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable,
entry->memdesc.flags |= (uint64_t)KGSL_MEMFLAGS_USERMEM_ADDR;
if (kgsl_memdesc_use_cpu_map(&entry->memdesc)) {
int ret;
/* Register the address in the database */
ret = kgsl_mmu_set_svm_region(pagetable,
@ -2479,7 +2480,12 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable,
entry->memdesc.gpuaddr = (uint64_t) hostptr;
}
return memdesc_sg_virt(&entry->memdesc, hostptr);
ret = memdesc_sg_virt(&entry->memdesc, hostptr);
if (ret && kgsl_memdesc_use_cpu_map(&entry->memdesc))
kgsl_mmu_put_gpuaddr(pagetable, &entry->memdesc);
return ret;
}
#ifdef CONFIG_DMA_SHARED_BUFFER