diff options
author | Kevin DuBois <kevindubois@google.com> | 2023-04-20 23:24:40 +0000 |
---|---|---|
committer | Kevin DuBois <kevindubois@google.com> | 2023-04-21 21:34:50 +0000 |
commit | 75b4a4ab15df252b112439300203dbc9b6d46922 (patch) | |
tree | 6e1e517d12d741d8c75fce7ff21b7e11a8bf64fd | |
parent | f9b29365a917cd77293a1b82dbe9ea170f6c5e1b (diff) | |
download | gpu-android-gs-pantah-5.10-t-qpr3-beta-3.tar.gz |
Revert "GPUCORE-36748 Fix kbase_gpu_mmap() error handling"android-t-qpr3-beta-3.1_r0.5android-t-qpr3-beta-3.1_r0.4android-t-qpr3-beta-3.1_r0.3android-13.0.0_r0.92android-13.0.0_r0.85android-13.0.0_r0.84android-13.0.0_r0.83android-13.0.0_r0.82android-gs-raviole-5.10-t-qpr3-beta-3android-gs-pantah-5.10-t-qpr3-beta-3android-gs-bluejay-5.10-t-qpr3-beta-3
This reverts commit 04bf4049652e9aa3e952bdc30c560054e1c0f060.
Bug: 274827412
Reason for revert: stability
Change-Id: I923387539eabbf72f51376decf95526f13339656
-rw-r--r-- | mali_kbase/mali_kbase_mem.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/mali_kbase/mali_kbase_mem.c b/mali_kbase/mali_kbase_mem.c index 7765072..ce6e94c 100644 --- a/mali_kbase/mali_kbase_mem.c +++ b/mali_kbase/mali_kbase_mem.c @@ -380,7 +380,6 @@ void kbase_remove_va_region(struct kbase_device *kbdev, struct rb_node *rbnext; struct kbase_va_region *next = NULL; struct rb_root *reg_rbtree = NULL; - struct kbase_va_region *orig_reg = reg; int merged_front = 0; int merged_back = 0; @@ -478,12 +477,6 @@ void kbase_remove_va_region(struct kbase_device *kbdev, rb_replace_node(&(reg->rblink), &(free_reg->rblink), reg_rbtree); } - /* This operation is always safe because the function never frees - * the region. If the region has been merged to both front and back, - * then it's the previous region that is supposed to be freed. - */ - orig_reg->start_pfn = 0; - out: return; } @@ -1759,7 +1752,7 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg, reg->flags & gwt_mask, kctx->as_nr, group_id, mmu_sync_info); if (err) - goto bad_aliased_insert; + goto bad_insert; /* Note: mapping count is tracked at alias * creation time @@ -1773,7 +1766,7 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg, group_id, mmu_sync_info); if (err) - goto bad_aliased_insert; + goto bad_insert; } } } else { @@ -1814,20 +1807,10 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg, return err; -bad_aliased_insert: - while (i-- > 0) { - struct tagged_addr *phys_alloc = NULL; - u64 const stride = alloc->imported.alias.stride; - - if (alloc->imported.alias.aliased[i].alloc != NULL) - phys_alloc = alloc->imported.alias.aliased[i].alloc->pages + - alloc->imported.alias.aliased[i].offset; - - kbase_mmu_teardown_pages(kctx->kbdev, &kctx->mmu, reg->start_pfn + (i * stride), - phys_alloc, alloc->imported.alias.aliased[i].length, - kctx->as_nr); - } bad_insert: + kbase_mmu_teardown_pages(kctx->kbdev, &kctx->mmu, reg->start_pfn, alloc->pages, + reg->nr_pages, kctx->as_nr); + kbase_remove_va_region(kctx->kbdev, reg); return err; |