ion: fix system secure force alloc
Even when ION_FLAG_POOL_FORCE_ALLOC is set for secure alloc, alloc_from_pool_preferred tries to get the pages from pool first. In case if it enters split_page_from_secure_pool, free_buffer_page can end up calling __free_pages on the page from pool which is hyp assigned, resulting in issues for e.g. a fault if page poisoning is enabled. Change-Id: I68759dc17551a5705693506a5c137977d429fe36 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
This commit is contained in:
parent
38f4fba64d
commit
979cdd6f6e
1 changed files with 5 additions and 1 deletions
|
@ -2,7 +2,7 @@
|
|||
* drivers/staging/android/ion/ion_system_heap.c
|
||||
*
|
||||
* Copyright (C) 2011 Google, Inc.
|
||||
* Copyright (c) 2011-2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2011-2019, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
|
@ -270,6 +270,9 @@ static struct page_info *alloc_from_pool_preferred(
|
|||
struct page_info *info;
|
||||
int i;
|
||||
|
||||
if (buffer->flags & ION_FLAG_POOL_FORCE_ALLOC)
|
||||
goto force_alloc;
|
||||
|
||||
info = kmalloc(sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
@ -301,6 +304,7 @@ static struct page_info *alloc_from_pool_preferred(
|
|||
}
|
||||
|
||||
kfree(info);
|
||||
force_alloc:
|
||||
return alloc_largest_available(heap, buffer, size, max_order);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue