android: ion: do not defer free for carveout heap
authorCho KyongHo <pullip.cho@samsung.com>
Wed, 7 Feb 2018 05:46:49 +0000 (14:46 +0900)
committerSangwook Ju <sw.ju@samsung.com>
Mon, 14 May 2018 10:45:22 +0000 (19:45 +0900)
commit2fd597315e34d48bbdfc9d1ac24d00024a9e80b0
tree3c7dfc1ab44d33540cea17f72f84e8d61cd2dc7d
parent660103696cc7f753e0da97cb1488b5246cc016e9
android: ion: do not defer free for carveout heap

Carved out heaps allocate buffers from a memory pool of with a limited
size. If it frees buffers in deferred manner, the heap may not be
available in a rare condition by unexpected external fragmentations.
Let's think about the following scenario in a 10MB carveout pool:
  1. allocated 4MB @ +0MB
  2. allocated 2MB @ +4MB
  3. freed 1 but defferred
  4. freed 2 but defferred
  5. allocated 3MB @ +6MB
  6. returned buffer 1 and 2 to the heap.
  7. allocated 4MB @ +0MB
  8. allocation of 3MB failed due to the fragmentation.

Any defferred behavior to the very limited resources is harmful.

Change-Id: I0a64fdec56f0ec1992c20f8ccd50d5c7fbfa8d40
Signed-off-by: Cho KyongHo <pullip.cho@samsung.com>
drivers/staging/android/ion/ion_carveout_heap.c