From 436d1f81a75b4b2fc91d077f4d588fe7141ce05f Mon Sep 17 00:00:00 2001 From: "Isaac J. Manjarres" Date: Thu, 19 Sep 2019 09:59:41 -0700 Subject: [PATCH] ion: Fail system secure heap creation if system heap is unavailable The system secure heap relies on the existence of the system heap. Thus, if the system heap is not available, do not create, the system secure heap. Change-Id: I7a99e0fda45ae02ed6e5c8a797d29e917e84f182 Signed-off-by: Isaac J. Manjarres --- .../staging/android/ion/heaps/ion_system_secure_heap.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/staging/android/ion/heaps/ion_system_secure_heap.c b/drivers/staging/android/ion/heaps/ion_system_secure_heap.c index 8e561a48047c..1ecc903b8ce0 100644 --- a/drivers/staging/android/ion/heaps/ion_system_secure_heap.c +++ b/drivers/staging/android/ion/heaps/ion_system_secure_heap.c @@ -323,6 +323,12 @@ static struct ion_heap_ops system_secure_heap_ops = { struct ion_heap *ion_system_secure_heap_create(struct ion_platform_heap *unused) { struct ion_system_secure_heap *heap; + struct ion_heap *sys_heap = get_ion_heap(ION_SYSTEM_HEAP_ID); + + if (!sys_heap) { + pr_err("Sys heap missing; ensure it's specified in the DT, before the sys secure heap\n"); + return ERR_PTR(-EINVAL); + } heap = kzalloc(sizeof(*heap), GFP_KERNEL); if (!heap) @@ -330,7 +336,7 @@ struct ion_heap *ion_system_secure_heap_create(struct ion_platform_heap *unused) heap->heap.ion_heap.ops = &system_secure_heap_ops; heap->heap.ion_heap.type = (enum ion_heap_type)ION_HEAP_TYPE_SYSTEM_SECURE; - heap->sys_heap = get_ion_heap(ION_SYSTEM_HEAP_ID); + heap->sys_heap = sys_heap; heap->destroy_heap = false; heap->work_lock = __SPIN_LOCK_UNLOCKED(heap->work_lock);